Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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# 多线程服务器响应多个客户端会话_C#_Multithreading_Tcpclient - Fatal编程技术网

C# 多线程服务器响应多个客户端会话

C# 多线程服务器响应多个客户端会话,c#,multithreading,tcpclient,C#,Multithreading,Tcpclient,让我解释一下情况。 我已经编写了一个C#多线程服务器,多个客户端可以连接到该服务器。 服务器保存来自所有客户端的字典。现在,每个客户端生成一个名为ipPhone的对象的新实例。要让服务器发送到连接的客户端,我使用networkstream.write()。发送到连接的客户端。 但是,客户端可以打开多个会话。这些会话保存在ipPhone对象的字典中。从这些会话中,我保存了IP和端口 现在我正在做这样的事情 foreach(dicIpPhoneSessions中的KeyValuePair会话对) {

让我解释一下情况。 我已经编写了一个C#多线程服务器,多个客户端可以连接到该服务器。 服务器保存来自所有客户端的字典。现在,每个客户端生成一个名为ipPhone的对象的新实例。要让服务器发送到连接的客户端,我使用networkstream.write()。发送到连接的客户端。 但是,客户端可以打开多个会话。这些会话保存在ipPhone对象的字典中。从这些会话中,我保存了IP和端口

现在我正在做这样的事情

foreach(dicIpPhoneSessions中的KeyValuePair会话对)
{
phoneSession=sessionPair.Value;
tcpClient=新的tcpClient();
tcpClient.Connect(sessionPair.ipNumber,sessionPair.portReceiving);
if(TCP客户端已连接)
{
clientStream=tcpClient.GetStream();
Write(buffer,0,buffer.Length);
clientStream.Flush();
}
}
但是,这不起作用,因为它似乎没有发送到正确的端口。
你们中有人知道我如何创建tcpClient和NetWorkStream的正确实例,以便将数据发送到我客户机的所有会话吗。

Erm…我不想重新发明轮子。据我所知,最好的现成解决方案是在Websockets上使用Windows 2012的SignalR。所有客户端都是在openedge中进行的,因此我希望坚持当前的方法。与客户端的tcp连接的问题是,任何数量的防火墙问题都可能会阻止您。您采取了哪些措施将问题隔离到您的代码中?