首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

winsocket 发送完数据后就 close ,能够吗?解决办法

2013-01-01 
winsocket 发送完数据后就 close ,能够吗?Private Sub sckSend_Connect()Dim bFileData() As ByteWith sck

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协议)。

热点排行