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后立即判断
这个应该在 Winsock 控件的 DataArrival() 事件中看接收到什么返回信息。
基本流程应该是(伪代码,具体你自己实现):
发送验证请求
清除接收标志(这个变量应该是模块级的或全局的)
记录当前时间
do
Sleep() 这儿10到100ms都可以,网络快的取少些,慢的可以取多些,都取10ms也行
Doevents
if (已接收数据) then
检查并设置验证结果标志(成功/失败)
exit do
end if
获取当前时间
if (已经超时,比如5秒) then 设置验证失败 :exit do
Doevents
loop
if (验证成功) then
做验证成功的事…………
else
做验证失败的事…………
提示失败
endif