Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 跟踪TCP上已连接客户端的最佳方法是什么?_C#_Sockets_Networking_Network Programming - Fatal编程技术网

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

C# 跟踪TCP上已连接客户端的最佳方法是什么?,c#,sockets,networking,network-programming,C#,Sockets,Networking,Network Programming,我根据在stack中找到的一些教程编写了一个小型的客户机/服务器TCP套接字演示项目 目前该项目正在阻塞,我为每个客户机分配了一个线程。这远非理想,但我想在使用异步之前熟悉基本套接字 我读过的教程中并没有一本真正解释了如何跟踪您当前的报告连接等,所以我只是自己探索了一下: private Dictionary<IPAddress, DateTime> connectedClients = new Dictionary<IPAddress, DateTime>(); pr

我根据在stack中找到的一些教程编写了一个小型的客户机/服务器TCP套接字演示项目

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

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

private Dictionary<IPAddress, DateTime> connectedClients = new Dictionary<IPAddress, DateTime>();
private Dictionary connectedClients=new Dictionary();
所以我的问题是:跟踪我的连接客户的最佳方式是什么

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


谢谢。

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

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

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


是唯一的。

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

您使用的是tcp还是udp?tcp很抱歉忘记了提及这一点。如果多个客户端从同一台机器连接,则它们具有不同的端口组合。具有相同传出端口的客户端无法连接到同一端口上的同一服务器。这就是tcp连接在传输层多路传输数据包的方式。