我写了一个小型的演示客户端/服务器TCP套接字项目,它基于我在堆栈中找到的许多教程。

当前,该项目正在阻塞,我为每个客户端专用一个线程。这远非理想,但我想在使用Async之前熟悉基本的套接字。

我读过的所有教程都没有真正解释如何跟踪您当前的报告连接等,因此我只是自己进行了探索:

private Dictionary<IPAddress, DateTime> connectedClients = new Dictionary<IPAddress, DateTime>();

所以我的问题是:跟踪我的已连接客户端的最佳方法是什么?

后续问题:
您如何处理测试?如果所有连接都来自同一台计算机(相同的IP,相同的MAC),那么如何确保条目是唯一的?对客户端对象的引用? GUID?两个都?

谢谢。

最佳答案

对于TCP连接,客户端和服务器的ip和port组合是唯一的,而对于UDP连接,客户端和服务器的端口组合是唯一的。

TCP连接:(服务器IP地址,服务器端口,客户端IP地址,客户端端口)

UDP连接:(服务器端口,客户端端口)

是独一无二的

10-07 19:39
查看更多