还是winsock搞不定,高手们来围观
时间:2011-07-27
来源:互联网
我用VB6的winsock做过动态数组,进行多个地址的TCP连接,部分代码如下 :
Private Sub Timer5_Timer()
Static i_0 As Integer '全部的socket
Static i_1 As Integer
If i_0 = 0 Then i_0 = 110
If start_link = 3 Then
If Winsock2(i_0).State <> sckConnected Then
If i_1 = 0 Then
Winsock2(i_0).Close
i_1 = 1
Else
Winsock2(i_0).Connect
i_1 = 0
End If
End If
End If
If i_1 = 0 Then i_0 = i_0 + 1
If i_0 > 130 Then
i_0 = 110
End If
End Sub
功能是判断如果是该连接断开的话,就尝试连接,在我自己用的电脑上发现正常运行。
但在某些机子上运行时发现,在进行TCP三次握手成功后,该程序又会自动发送[RST/ACT]命令来复位;并且软件在运行一段时间后会出现10055的错误,好像是TCP的缓冲区不够,出现错误地方是在Winsock2(i_0).Connect语句。但目前我尝试了六台电脑,有三台电脑正常,三台会出现上述情况,高手们来分析一下?
Private Sub Timer5_Timer()
Static i_0 As Integer '全部的socket
Static i_1 As Integer
If i_0 = 0 Then i_0 = 110
If start_link = 3 Then
If Winsock2(i_0).State <> sckConnected Then
If i_1 = 0 Then
Winsock2(i_0).Close
i_1 = 1
Else
Winsock2(i_0).Connect
i_1 = 0
End If
End If
End If
If i_1 = 0 Then i_0 = i_0 + 1
If i_0 > 130 Then
i_0 = 110
End If
End Sub
功能是判断如果是该连接断开的话,就尝试连接,在我自己用的电脑上发现正常运行。
但在某些机子上运行时发现,在进行TCP三次握手成功后,该程序又会自动发送[RST/ACT]命令来复位;并且软件在运行一段时间后会出现10055的错误,好像是TCP的缓冲区不够,出现错误地方是在Winsock2(i_0).Connect语句。但目前我尝试了六台电脑,有三台电脑正常,三台会出现上述情况,高手们来分析一下?
作者: wildone 发布时间: 2011-07-27
终于查明原因了,是TCP连接数限制的问题,文件是Tcpip.sys。现在找了个1000个连接的打包进安装程序就好了,但还有一个问题,因为是系统文件,安装程序后系统有提示,怎么能够想那些补丁包一样去除系统的提示呢
作者: wildone 发布时间: 2011-07-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28