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