C#服务端与客户端连接实现的由来:那么既然一个服务器端口可以应对多个客户端连接,那么接下来我们就看一下,如何让多个客户端与服务端连接。如同我们上面所说的,一个TcpClient就是一个Socket,所以我们只要创建多个TcpClient,然后再调用Connect()方法就可以了:
C#服务端与客户端连接实现实例:
- class Client {
- static void Main(string[] args) {
- Console.WriteLine("Client Running ...");
- TcpClient client;
- //C#服务端与客户端连接实现
- for (int i = 0; i <= 2; i++) {
- try {
- client = new TcpClient();
- client.Connect("localhost", 8500); // 与服务器连接
- } catch (Exception ex) {
- Console.WriteLine(ex.Message);
- return;
- }
- //C#服务端与客户端连接实现
- // 打印连接到的服务端信息
- Console.WriteLine("Server Connected!{0} --> {1}",
- client.Client.LocalEndPoint, client.Client.RemoteEndPoint);
- }
- // 按Q退出
- }//C#服务端与客户端连接实现
- }
上面代码最重要的就是client = new TcpClient()这句,如果你将这个声明放到循环外面,再循环的第二趟就会发生异常,原因很显然:一个TcpClient对象对应一个Socket,一个Socket对应着一个端口,如果不使用new操作符重新创建对象,那么就相当于使用一个已经与服务端建立了连接的端口再次与远程建立连接。
此时,如果在“命令提示符”运行“netstat -a”,则会看到类似下面的C#服务端与客户端连接实现实例的输出:
- TCPjimmy:8500 0.0.0.0:0 LISTENING
- TCPjimmy:8500 localhost:10282 ESTABLISHED
- TCPjimmy:8500 localhost:10283 ESTABLISHED
- TCPjimmy:8500 localhost:10284 ESTABLISHED
- TCPjimmy:10282localhost:8500 ESTABLISHED
- TCPjimmy:10283localhost:8500 ESTABLISHED
- TCPjimmy:10284localhost:8500 ESTABLISHED
可以看到创建了三个连接对,并且8500端口持续保持侦听状态,从这里以及上面我们可以推断出TcpListener的Start()方法是一个异步方法。
C#服务端与客户端连接实现的情况就向你介绍到这里,希望对你了解和学习C#服务端与客户端连接实现有所帮助。
【编辑推荐】