在TCP上跟踪连接客户端的最佳方法是什么?

时间:2013-04-28 21:54:26

标签: c# sockets networking network-programming

我根据我通过堆栈找到的一些教程编写了一个小的演示客户端/服务器TCP套接字项目。

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

我读过的所有教程都没有真正解释过如何跟踪当前的报告连接等,所以我只是自己探讨了这个:

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

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

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

感谢。

2 个答案:

答案 0 :(得分:2)

我会保留Sockets返回的TcpListner.Accept()列表。当客户端断开连接时,从列表中删除套接字。可以从RemoteEndPoint属性中检索有关远程端点(用于报告)的信息。

答案 1 :(得分:1)

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

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

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

是独一无二的。