在这里,我们展示了一个使用TCP的客户机-服务器聊天应用程序的样本,它允许多个客户机同时连接。
.NET框架提供了TcpClient和TcpListener类(System.Net.Sockets)作为使用TCP进行数据通信的类。 这些类在内部使用Socket类(System.Net.Sockets),目的是使处理Socket类更容易。 然而,它处理它们的难度似乎并没有太大的区别。 所以在这里,我们没有使用TcpClient和TcpListener类,而是使用Socket类来创建服务器和客户端。
服务器
客户端连接到服务器并发送和接收数据--就Socket类而言,可以使用Send和Receive方法来发送和接收数据。 然而,聊天服务器不能直接调用Receive方法,因为它会阻塞线程——直到它收到数据(在阻塞模式下),在此期间它不能做任何事情,更不用说发送数据。
有两种方法可以在等待接收数据时启用传输:轮询和Socket类的异步方法。 在轮询方法中,通过循环或定时器