Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
Sockets WIndows 2012上的插槽打开速度非常慢_Sockets_Vb6_Windows2012 - Fatal编程技术网

Sockets WIndows 2012上的插槽打开速度非常慢

Sockets WIndows 2012上的插槽打开速度非常慢,sockets,vb6,windows2012,Sockets,Vb6,Windows2012,我正在开发一个传统的VB6应用程序,它使用套接字与各种设备进行通信。在2012系统上,我们注意到在不同域上的多个系统上调用winSock.Connect到正在触发的连接事件之间的时间大约为9秒。在2008 R2或更低版本的系统上,在调用和触发事件之间的1-3毫秒 以前有没有人遇到过这种情况,或者对造成这种情况的原因有什么想法 谢谢 编辑:我对Wireshark进行了一些窥探,发现前几次TCP传输没有连接并被重新传输,不确定这是否会有帮助Winsock控件没有什么特别的“特殊”,它只是API上的一

我正在开发一个传统的VB6应用程序,它使用套接字与各种设备进行通信。在2012系统上,我们注意到在不同域上的多个系统上调用winSock.Connect到正在触发的连接事件之间的时间大约为9秒。在2008 R2或更低版本的系统上,在调用和触发事件之间的1-3毫秒

以前有没有人遇到过这种情况,或者对造成这种情况的原因有什么想法

谢谢


编辑:我对Wireshark进行了一些窥探,发现前几次TCP传输没有连接并被重新传输,不确定这是否会有帮助

Winsock控件没有什么特别的“特殊”,它只是API上的一个薄型包装。唯一值得注意的是它是32位的,必须在WOW64内部运行

您可能正在做一些有趣的事情,或者所有使用winsock API的32位程序都应该以相同的方式看到相同的问题


也许您在这台服务器上有一个名称解析问题?

经过深入挖掘,我终于找到了答案

从Windows Server 2012开始,Microsoft启用了称为显式拥塞通知(ECN)的TCP扩展。这允许端到端通知网络拥塞和数据包丢失。在TCP数据包上启用此功能的方式是通过ECN(RFC 3168(2001))定义中定义的标志

对我来说,我的应用程序与之对话的设备比较旧,不支持ECN标志。当他们收到启用该标志的数据包时,他们不会确认传输,导致服务器超时。两次传输失败后,Windows似乎关闭了ECN标志,设备确认了数据包

我在管理员命令提示符下禁用了运行以下命令的ECN:

netsh interface tcp set global ecncapability=disabled

我已经创建了一些测试应用程序,它们也显示了相同的问题。这不是名称解析问题,我使用IP地址连接。它也发生在不同的网站(客户网站和内部复制)