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