3

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

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

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

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

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

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

谢谢。

4

2 回答 2

2

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

于 2013-04-28T22:00:48.800 回答
1

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

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

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

是独一无二的。

于 2013-04-28T21:58:34.740 回答