socket紧急问题,技术经理问我的问题,紧急
我们一个项目,建了一个客户端socket连接,当向服务端发送"CCPP",服务端会验证返回信息,我们要判断返回码,如果是"A"就成功,如果返回码为"B"就失败,我们想在senddata后立即判断返回码,代码如下:
Private Sub Command1_Click()
If Winsock1.State = sckConnected Then Winsock1.SendData "CCPP"
msgbox str
end sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData str, vbString '按照字符串类型接收信息
End Sub
请问为什么返回码变量str始终为空呢?因为有多种可能的命令,我不想在Winsock1_DataArrival里判断,就想在senddata后立即判断
[解决办法]
单加 Sleep 肯定不行。因为你的 Sleep 以及随后的代码处于独占地位。
直接在 Winsock1_DataArrival 事件中显示不是更直接吗?
当然,你也可以在 Command1_Click 事件中用加 DoEvents 的循环来等待(尽管不是太好):
Private Sub Command1_Click()
str = ""
If Winsock1.State = sckConnected Then Winsock1.SendData "CCPP"
Do Until str > ""
DoEvents
Loop
msgbox str
end sub
另外,好的编程习惯不推荐用 str 这样的关键字作变量名。