winsocket 发送完数据后就 close ,能够吗?
Private Sub sckSend_Connect()
Dim bFileData() As Byte
With sckSend
'获得 bFileData
'.......
If (.State = sckConnected) Then
.SendData bFileData '发送数据
.close '关闭
End If
End With
End Sub
因为服务器只用sckSend 来向超过100台电脑发送信息,要求复用sckSend,
所以要求发送完就关闭,但是:
.SendData bFileData
执行后立刻 .close ,
对方收不到 数据内容?
这该如何办?
sckSend 应该在什么时候关闭? 请教~
[解决办法]
这要看你发的是TCP包还是UDP包,如果发的是TCP包,则要等对方有回应,而发UDP包,则不管.
[解决办法]
1.发完后关闭发送SHUTDOWN.SEND ,或SHUTDOWN.both ,
2.然后延时,太快则内容不及发完
3.执行 .close
[解决办法]
winsock的SendData方法是异步发送的,也就是数据还未发完就开始执行下一条语句,所以不能在senddata的后面调用close方法,否则发送的数据不完整。
如果想在数据完全发出后马上关闭连接应该在SendComplete事件里调用close方法
SendComplete事件在数据发送完成时触发
Private Sub sckSend_SendComplete()
sckSend.Close
End Sub
[解决办法]
重新监听才需要关闭(TCP协议)。