winsock咨询
大家好,请教大家一个问题,我这程序放在定时器里面(100ms或1000ms响应一次),经常发不出去,调试状态下查看winsock1.state的值经常是6(连接中),如果程序放在Botton事件中就可以,查不出原因,所以请教大家
With Winsock1
If .State <> sckClosed Then
.Close
End If
.RemoteHost = "192.168.0.1"
.RemotePort = "33822"
.Connect
DoEvents
If .State <> sckConnected Then
Exit Sub
End If
End With
DoEvents
'发送数据
If Winsock1.State = sckConnected Then
Winsock1.SendData str
End If
[解决办法]
把“握手”放在主程序了。With Winsock1
If .State <> sckClosed Then
.Close
End If
.RemoteHost = "192.168.0.1"
.RemotePort = "33822"
.Connect
DoEvents
If .State <> sckConnected Then
Exit Sub
End If
End With
DoEvents
可以在定时器里定时发送数据。
增加“心跳”检测。
[解决办法]
你的定时器不用每一次发都去握手吧。
握手一次就可以了啊。定时器只做DOEVENTS的事就可以了。