【发布时间】:2015-11-05 01:24:23
【问题描述】:
我有一个服务器程序,它接受大约 100000 个 tcp 客户端并使用异步套接字编程向它们发送数据。要向客户端发送数据,我使用一个为每个客户端调用 BeginSend 的 for 循环。 问题是当我开始向客户端发送数据时,新客户端在发送完成之前无法连接到服务器。 任何机构都可以帮我解决这个问题吗?
//This is the Loop that calls Send Method
foreach (ClientInfo item in followers)
{
Socketing.Send(item.state, JSONData);
}
public static void Send(StateObject state, String data)
{
byte[] byteData = Encoding.UTF8.GetBytes(data);
state.workSocket.BeginSend(byteData, 0, byteData.Length, 0, new AsyncCallback(SendCallback), state);
}
private static void SendCallback(IAsyncResult ar)
{
StateObject state = (StateObject)ar.AsyncState;
Socket socket = state.workSocket;
int bytesSent = socket.EndSend(ar);
}
【问题讨论】:
-
首先显示一些代码,以便我们找出可能出现的问题。
-
您需要在另一个线程上对这些回复进行排队。并且还限制/限制您一次使用的端口数量。
标签: c# sockets asynchronous tcp