Visual C#网络编程之TCP.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:7 大小:45KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

Visual C#网络编程之TCP.doc

VisualC#网络编程之TCP.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

VisualC#网络编程之TCP前一篇《VisualC#.Net网络程序开发之Socket》中说到:支持Http、Tcp和Udp的类组成了TCP/IP三层模型(请求响应层、应用协议层、传输层)的中间层-应用协议层,该层的类比位于最底层的Socket类提供了更高层次的抽象,它们封装TCP和UDP套接字的创建,不需要处理连接的细节,这使得我们在编写套接字级别的协议时,可以更多地尝试使用TCPClient、UDPClient和TcpListener,而不是直接向Socket中写。它们之间的这种层次关系示意如下:可见,TcpClient类基于Socket类构建,这是它能够以更高的抽象程度提供TCP服务的基础。正因为这样,许多应用层上的通讯协议,比如FTP(FileTransfersProtocol)文件传输协议、HTTP(HypertextTransfersProtocol)超文本传输协议等都直接创建在TcpClient等类之上。TCPClient类使用TCP从Internet资源请求数据。TCP协议建立与远程终结点的连接,然后使用此连接发送和接收数据包。TCP负责确保将数据包发送到终结点并在数据包到达时以正确的顺序对其进行组合。从名字上就可以看出,TcpClient类专为客户端设计,它为TCP网络服务提供客户端连接。TcpClient提供了通过网络连接、发送和接收数据的简单方法。若要建立TCP连接,必须知道承载所需服务的网络设备的地址(IPAddress)以及该服务用于通讯的TCP端口(Port)。Internet分配号码机构(InternetAssignedNumbersAuthority,IANA)定义公共服务的端口号(你可以访问http://www.iana.org/assignments/port-numbers获得这方面更详细的资料)。IANA列表中所没有的服务可使用1,024到65,535这一范围中的端口号。要创建这种连接,你可以选用TcpClient类的三种构造函数之一:1、publicTcpClient()当使用这种不带任何参数的构造函数时,将使用本机默认的ip地址并将使用默认的通信端口号0。这样情况下,如果本机不止一个ip地址,将无法选择使用。以下语句示例了如何使用默认构造函数来创建新的TcpClient:TcpClienttcpClientC=newTcpClient();2、publicTcpClient(IPEndPoint)使用本机IPEndPoint创建TcpClient的实例对象。上一篇介绍过了,IPEndPoint将网络端点表示为IP地址和端口号,在这里它用于指定在建立远程主机连接时所使用的本地网络接口(IP地址)和端口号,这个构造方法为使用本机IPAddress和Port提供了选择余地。下面的语句示例了如何使用本地终结点创建TcpClient类的实例:IPHostEntryipInfo=Dns.GetHostByName("www.tuha.net");//主机信息IPAddressList[]ipList=ipInfo.AddressList;//IP地址数组IPAddressip=ipList[0];//多IP地址时一般用第一个IPEndPointipEP=newIPEndPoint(ip,4088);//得到网络终结点try{TcpClienttcpClientA=newTcpClient(ipLocalEndPoint);}catch(Exceptione){Console.WriteLine(e.ToString());}到这里,你可能会感到困惑,客户端要和服务端创建连接,所指定的IP地址及通信端口号应该是远程服务器的呀!事实上的确如此,使用以上两种构造函数,你所实现的只是TcpClient实例对象与IP地址和Port端口的绑定,要完成连接,你还需要显式指定与远程主机的连接,这可以通过TcpClient类的Connect方法来实现,Connet方法使用指定的主机名和端口号将客户端连接到远程主机:1)、publicvoidConnect(IPEndPoint);使用指定的远程网络终结点将客户端连接到远程TCP主机。publicvoidConnect(IPAddress,int);使用指定的IP地址和端口号将客户端连接到TCP主机。publicvoidConnect(string,int);将客户端连接到指定主机上的指定端口。需要指出的是,Connect方法的所有重载形式中的参数IPEndPoint网络终结点、IPAddress以及表现为string的Dns主机名和int指出的Port端口均指的是远程服务器。以下示例语句使用主机默认IP和Port端口号0与远程主机