gpt4 book ai didi

c#异步TCP服务器阻塞客户端

转载 作者:可可西里 更新时间:2023-11-01 02:54:28 28 4
gpt4 key购买 nike

我用 C# 开发了一个异步 TCP 服务器。代码是这样的

m_mainSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);

IPEndPoint ipLocal = new IPEndPoint(IPAddress.Any, portno);

m_mainSocket.Blocking = false;

m_mainSocket.Bind(ipLocal);

m_mainSocket.Listen(5000);

m_mainSocket.BeginAccept(new AsyncCallback(OnClientConnect), null);

OnclienetConnect是这样的,

deviceSocket soc = new deviceSocket();
soc.bytecount = 0;
soc.socket = m_mainSocket.EndAccept(asyn);
m_mainSocket.BeginAccept(new AsyncCallback(OnClientConnect), null);

m_workerSocket.Add(soc);

WaitForData(m_workerSocket[m_workerSocket.Count - 1].socket);

它可以正常工作一段时间(最多 30-40 分钟)。之后它开始阻止客户端。谁能说出这可能是什么问题?

最佳答案

如果它在一段时间内工作正常,然后停止,我的主要猜测是您正在打开新的客户端套接字(需要查看您的代码以确保),并且在完成后没有关闭它们。

Windows(相当合理)对您可以在给定端口上打开的套接字有限制。如果您的应用程序随着时间的推移打开新套接字,并且没有关闭它们,您可以达到此限制,此时服务器将停止接受新连接。我过去也遇到过类似的问题。

这是一篇您可以查看的有趣文章:http://www.codeproject.com/Articles/83102/C-SocketAsyncEventArgs-High-Performance-Socket-Cod

关于c#异步TCP服务器阻塞客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26398489/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com