在TCP上跟踪已连接客户端的最佳方法是什么?
本文关键字:最佳 方法 是什么 客户端 连接 TCP 跟踪 | 更新日期: 2023-09-27 18:11:19
我编写了一个小型的演示客户端/服务器TCP套接字项目,该项目基于我通过stack找到的一些教程。
目前项目正在阻塞,我为每个客户端专用一个线程。这远非理想,但我想在使用Async之前熟悉基本的套接字。
我读过的教程中没有一个真正解释过如何跟踪当前连接以进行报告等,所以我只是自己探索了一下:
private Dictionary<IPAddress, DateTime> connectedClients = new Dictionary<IPAddress, DateTime>();
所以我的问题是:什么是跟踪我连接的客户端的最佳方法?
后续问题:你如何处理测试?如果所有连接都来自同一台机器(相同的IP,相同的MAC),如何确保条目是唯一的?对客户端对象的引用?一个GUID吗?都有?
谢谢。
我只保留TcpListner.Accept()
返回的Sockets
列表。当客户端断开连接时,从列表中删除套接字。关于远程端点的信息(用于报告)可以从RemoteEndPoint
属性中检索。
客户端和服务器端ip和端口的组合对于TCP连接是唯一的,对于UDP连接,客户端和服务器端端口的组合是唯一的。
TCP连接:(服务器ip地址,服务器端口,客户端ip地址,客户端端口)
UDP连接:(server port,client port)
是独一无二的。