gpt4 book ai didi

c# - 客户端上的 10048 套接字错误?可能的原因?

转载 作者:太空狗 更新时间:2023-10-29 22:35:04 28 4
gpt4 key购买 nike

我正在编写一个自定义 TCP 服务器和客户端,并在执行大量请求(准确地说是 60,000 个)时,我开始收到此套接字错误 10048,即 should mean “该地址已被使用。”

错误一直发生,除非我暂停该过程大约 2 或 3 分钟然后再次开始,然后在重新启动后不久它开始出现相同的错误。如果我暂停客户端进程并重新启动服务器进程,我仍然会在客户端上遇到相同的错误。所以这是一个完整的客户端问题。

不过这没有意义,这个错误通常只在绑定(bind)时发生,而且这个错误发生在客户端而不是服务器。可能的原因是什么?

我的初始化的一小段摘录:

TcpClient client = new TcpClient();
client.Connect("XXXXX -- some ip", 25000);
client.NoDelay = true;
NetworkStream clientStream = client.GetStream();

此外,其他一切似乎都工作正常(包括来回发送所需的时间)并且在使用 127.0.0.1 时效果很好,但将其放在另一台 LAN 计算机上时我开始收到 10048 错误。

我的初始化方式有问题吗?还有什么可能导致客户端出现此错误?

最佳答案

参见 http://msdn.microsoft.com/en-us/library/e160993d%28v=VS.90%29.aspx设置套接字选项。您需要 DontLinger 或 ReuseAddr,或两者,我不确定。基本上,在您断开 TCP 连接后,您的套接字会停留在 TIME_WAIT 状态一段时间,一旦获得足够多的套接字,您将无法创建任何新的客户端连接。使用 netstat -na 程序输出验证这一点。

您还可以通过在注册表: http://msdn.microsoft.com/en-us/library/aa560610%28BTS.20%29.aspx默认值为 4 分钟,可以安全地减少到 1 或 2 分钟,尤其是对于测试。

免责声明:无论如何我都不是 TCP 大师。

关于c# - 客户端上的 10048 套接字错误?可能的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2540947/

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