Socket服务端最大并发连接数受限问题

maling 2007-01-05 12:03:09
做服务端
主要代码如下:
public SocketServer(EndPoint endPoint)
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(endPoint);
}

public void Start()
{
connectDone = new ManualResetEvent(false);
connectThread = new Thread(new ThreadStart(ConnectService));
connectThread.IsBackground = true;
socket.Listen(1024);
connectThread.Start();
}

protected void ConnectService()
{
while (true)
{
connectDone.Reset();
socket.BeginAccept(new AsyncCallback(ConnectInit), socket);
connectDone.WaitOne();
}
}

protected void ConnectInit(IAsyncResult ar)
{
Socket clientSocket = ((Socket) ar.AsyncState).EndAccept(ar);
connectDone.Set();
if (OnConnect != null)
{
NetworkClient client = new NetworkClient(clientSocket);
OnConnect(client);
}
}
当客户端有3个以上的用户同时连接时,3个以后的连接都连接不上。望大家帮我看看。
...全文
1812 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuq 2007-01-09
  • 打赏
  • 举报
回复
不至于哟,我的程序listen(200),我自己测试了20个客户端同时连。每个用单独的线程处理。不过没有测试大数据量时的状况。
maling 2007-01-05
  • 打赏
  • 举报
回复
快速建立20个连接后,有时候只有2个能有,有时候只有3个能用,如果隔一秒或以上时间后再建一个连接,就没有这个问题。大家帮我看看,急晕了。
maling 2007-01-05
  • 打赏
  • 举报
回复
全部是异步处理方式的,包括客户端的连接及发送信息,读取信息等都是异步的,我通过端口察看器发现已经建立连接了,可就是3个以上的连接就是无法通讯,主要是建立连接时的并发量不能太猛,必须隔1秒建一个才可以
robber_web1780 2007-01-05
  • 打赏
  • 举报
回复
多线程
robber_web1780 2007-01-05
  • 打赏
  • 举报
回复
用异步
ilove8 2007-01-05
  • 打赏
  • 举报
回复
mark
maling 2007-01-05
  • 打赏
  • 举报
回复
客户段连续创建3个以上的连接时就有问题,如果没创建一个连接Sleep(1000)就没有问题,Sleep的时间不能太短,否则一样不能建立连接。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧