客户端有一个字串发给服务器,并等待服务器返回数据。
例如:
procedure SendDataTest;
begin
如果 clientSocket.socket.sendText(OK?); 成功
这里要等待服务器应答,直到有数据返回。不要让它产生一个ONSocketRead事件。
if ClientSocket.ReceiveText = OK then
//做一些事。
end;
怎样控制它等待多长时间就认为服务器没有数据返回,然后让此过程提示出错。
而且如果服务器返回的数据包大于一个数据包的大小时,这样返回的字串会不会少掉一部分?
先关注:
最好使用阻塞通讯模式.
那就showmodal一个窗口,这样函数就会在这里停这,等到你接受到了数据就在关闭模态窗口就可以了!!!
当然也可以用多线程,发送&接受斗方在子线程中,require一个信号后发送,等到接受到回应就release信号量,主线程的函数等待这个信号量就可以了。
晕到。用Indy组件吧,它的阻塞模式作的不错,对于你的要求很容易实现.
学习一下
在SocketClient的onread事件里写接收信息
procedure SendDataTest;
var
FirstTickCount:longint;
begin
clientSocket.socket.sendText(OK?);
FirstTickCount := GetTickCount;
Count := 0;
while (not ClientSocket.Socket.ReceiveLength>0) and (Count<5000) do//超时为5秒
begin
application.ProcessMessages;
Count := GetTickCount-FirstTickCount;
end;
if ClientSocket.Socket.ReceiveText = OK then
//做一些事。
end;