网络 I/O 编程:从基础到异步实现
1. 网络 I/O 基础与异步处理
在实际应用中,传统的网络 I/O 扩展性不佳。大多数服务器每分钟需要处理数千甚至数万个连接。为了应对高并发连接,应用程序采用异步 I/O 来接受客户端的连接请求,并创建与客户端的套接字连接。之后,原始的监听器会继续监听,等待下一个客户端连接。每次接受一个连接请求,都会创建一个新的套接字,而客户端对此并不知情,在客户端看来,它已经成功连接到了所请求的 IP 地址和端口。
需要注意的是,这种方式与使用无连接协议的 UDP 不同。TCP/IP 建立连接后,客户端和服务器可以直接通信,无需为每个数据包重新寻址。
2. 创建网络流服务器
要创建一个用于 TCP/IP 流的网络服务器,可以按照以下步骤操作:
1. 创建一个TcpListener对象,监听选定的 TCP/IP 端口。这里我们选择端口 65000:
IPAddress localAddr = IPAddress.Parse("127.0.0.1"); TcpListener tcpListener = new TcpListener(localAddr, 65000);- 启动
TcpListener对象:
tcpListener.Start();- 等待客