利用TCP开发程序时,.NET框架提供两种工作方式,一种是同步(Synchronization)工作方式,另一种是异步(Asynchronous)工作方式。
同步工作方式是指利用TCP编写的程序执行到监听或接受语句时,在未完成当前工作(侦听到连接请求或收到对方发来的数据)前不再继续往下执行,线程处于阻塞状态,知道该语句完成相应的工作后才继续执行下一条语句。
异步工作方式是指程序执行到监听或接受语句时,不论当前工作是否完成,都会继续往下执行。
与同步工作方式和异步工作方式相对应,利用Socket类进行编程时,系统也提供相应的方法,分别称为同步套接字编程和异步套接字编程。.NET框架专门提供了两个类:TcpClient类和TcpListener类,这两个类与套接字一样也分有同步和异步工作方式及其对应方法。
C#中的TCP编程
.NET对套接字进行封装TcpClient类和TcpListener类封装在System.Net.Sockets命名空间下。但是要注意,TcpClient类和TcpListener类只支持标准协议编程。如果希望编写非标准协议程序,只能使用套接字来实现。
TcpListener类用于监听客户端连接请求,TcpClient类用于提供本地主机和远程主机的连接信息。
TcpListener类
TcpListener类用于监听和接受传入的连接请求。该类的构造函数常用的有两种重载形式:
TcpListener(IPEndPoint iep)//在指定的IP地址与端口号监听客户端连接请求,iep包含本机的IP地址与端口号
TcpListener(IPAddress localAddr,int port)//直接指定本机IP地址和端口,并通过指定的IP端口监听传入连接请求。如果本机IP指定为IPAddress.Any端口为0则系统自动分配IP地址和端口号
TcpListener类的常用方法
TcpClient类
该类主要用于客户端编程,TcpClient的构造函数有以下四种重载形式:
TcpClient tcpClient =new TcpClient();//TcpClient()该构造函数创建一个默认的TcpClient对象,并自动分配本机(客户端)IP地址和端口号。
tcpClient.Connect("www.abcd.com",518);//利用此构造函数创建对象后,还必须调用Connect方法与服务器建立连接。
TcpClient tcpClient=new TcpClient(AddressFamily.InterNetwork);//自动分配本机(客户端)IP地址和端口号,但是使用AddressFamily枚举指定使用哪种网络协议。
tcpClient.Connect("www.abcd.com",518);//创建该对象后,还必须调用Connect方法与服务器建立连接。
IPAddress[] address=Dns.GetHostAddress (Dns.GetHostName());
IPEndPoint iep= new IPEndPoint (address[0],518);
TcpClient tcpClient =new TcpClient(iep);//该构造函数的参数iep指定本机(客户端)IP地址和端口号,当客户端有一个以上的IP地址时,而且程序员希望直接指定IP地址和端口号,可以使用这种方式。
tcpClient.Connect("www.abcd.com",518);//创建该对象后,还必须调用Connect方法与服务器建立连接。</span>
TcpClient tcpClient =new TcpClient("www.abcd",518);//TcpClient(string hostname,int port)参数中的hostname表示要连接的远程主机DNS名,port表示要连接的远程主机的端口号</span>
TcpClient类的常用属性
TcpClient类的常用方法