更新:2007 年 11 月
此示例演示如何使用 System.Net.Sockets.Socket 类中的增强功能来生成一个服务器应用程序,该服务器应用程序使用异步网络 I/O 来获得最高性能。
有关使用这些示例的信息,请参见下面的主题:
使用命令提示生成示例
- 打开命令提示窗口,然后定位到 AsyncSocketServer 目录下的 CS 子目录。有关所需设置和 SDK 命令提示的信息,请参见如何:设置示例设置。 
- 在命令行中键入 msbuild AsyncSocketServer.sln。此命令将同时生成 AsyncSocketServer 和 AsyncSocketClient 应用程序。 
使用 Visual Studio 生成示例
- 打开 Windows 资源管理器,然后定位到 AsyncSocketServer 目录下的 CS 子目录。 
- 双击 AsyncSocketServer.sln 的图标以在 Visual Studio 中打开该文件。 
- 在“生成”菜单中选择“生成解决方案”。 
AsyncSocketServer 和 AsyncSocketClient 应用程序都是在默认的 \bin 或 \bin\Debug 目录中生成的。
运行示例
- 使用命令提示窗口,定位到包含新的可执行文件的目录。 
- 在命令行中键入 AsyncSocketServer.exe 及相应的命令行参数以运行 AsyncSocketServer 应用程序。 
- 在命令行中键入 AsyncSocketClient.exe 及相应的命令行参数,以运行用于测试 AsyncSocketServer 应用程序的 AsyncSocketClient 应用程序。 
要求
本示例需要 .NET Framework v3.5、3.0 SP1 或 2.0 SP1。
演示
System.Net.Sockets.Socket 类中添加了一系列新类作为增强功能集的一部分,可提供可供专用的高性能套接字应用程序使用的可选异步模式。这些增强功能是专为需要高性能的网络服务器应用程序而设计的。应用程序可以完全使用增强的异步模式,也可以仅仅在应用程序的目标区域(例如,在接收大量数据时)使用此模式。
AsyncSocketServer 示例演示如何通过实现回显服务器以在 System.Net.Sockets.Socket 类上使用这些新方法。服务器将从客户端读取的所有数据发送回客户端。在此示例中实现的回显服务器将同时处理多个客户端(最多为命令行参数指定的最大数目),并突出显示基于事件的异步套接字方法的某些重要元素。AsyncSocketServer 示例演示如何创建可重用数据缓冲区和 System.Net.Sockets.SocketAsyncEventArgs 上下文对象的池,以作为一种提高服务器性能的方法。
AsyncSocketClient 示例是一个用于测试 AsyncSocketServer 示例应用程序的简单客户端应用程序。AsyncSocketClient 示例不会使用 System.Net.Sockets.Socket 类中的任何新的增强功能。
AsyncSocketServer 应用程序需要四个命令行参数。
AsyncSocketServer.exe <numConnections> <receiveSize > <addressFamily> <localPortNum>
参数如下:
- numConnections - 服务器将接受的最大同时连接数。 
- receiveSize - 服务器针对每个接收操作所使用的缓冲区大小(以字节为单位)。 
- addressFamily - 服务器将用于侦听传入连接的套接字的地址族。支持的值为 ipv4 和 ipv6。 
- localPortNum - 服务器将绑定到的本地端口。 
下面的用法示例允许 IPv4 上包含 500 个连接并侦听端口 8000,而且对每个接收操作使用 1024 字节的缓冲区大小:
AsyncSocketServer.exe 500 1024 ipv4 8000
AsyncSocketClient 应用程序需要两个命令行参数。
AsyncSocketClient.exe <destIPAddress> <destPortNum>
参数如下:
- destIpaddress - AsyncSocketServer 要连接到的目标 IP 地址。 
- destPortNum - AsyncSocketServer 的目标端口号。 
请参见
参考
System.Net.Sockets.SendPacketsElement