tcpclient 使用问题 ( 积分: 100 )

  • 主题发起人 主题发起人 zzs3842
  • 开始时间 开始时间
Z

zzs3842

Unregistered / Unconfirmed
GUEST, unregistred user!
功能:
向服务端发送指令,收到正确的数据,就继续发指令,收到正确的数据就继续发指令,。。。。。。 直到返回的数据为某一个数据 就结束。
问题: 中间有时发送指令后 没有数据返回。不知怎么处理。
源代码如下:请指点
procedure TForm1.Button1Click(Sender: TObject);
begin
tcpclient1.RemoteHost := '192.168.0.178';
tcpclient1.RemotePort := '3003';
sendcommand('15', '');
end;

procedure TForm1.sendcommand(command, data: string);
begin
try
if tcpclient1.Connected = false then tcpclient1.Connect;
if tcpclient1.Connected then
begin
TcpClient1.Sendln(HexStrToStr('06' + leijiahe('00', command, data) + '07'));
memo1.Lines.Add(HexStrToStr('06' + leijiahe('00', command, data) + '07'));
tcpclient1.Receiveln;
end;
finally
//tcpclient1.Disconnect;
end;
end;

procedure TForm1.TcpClient1Receive(Sender: TObject; Buf: PAnsiChar;
var DataLen: Integer);
var str: string;
k, i: integer;
begin
str := strtohexstr1(Buf);
memo1.Lines.Add(str);
k := hexstrtoint(copy(str, 11, 4));
case k of
48 + 51: begin
tcpclient1.Disconnect;
showmessage('读取刷卡记录结束!');
end;
48 + 48:
begin
i := hexstrtoint1(copy(str, 7, 4));
case i of
49 * 100 + 53: begin
memo1.Lines.Add(str);
sendcommand('15', '');
end;
end;
end;
end;
end;

procedure TForm1.TcpClient1Error(Sender: TObject; SocketError: Integer);
begin
// TcpClient1.Disconnect;
memo1.Lines.Add('错误:' + inttostr(SocketError));
end;
 
咋这么冷清呢?大富翁 都潜水了?
 
tcpclient1.Receiveln; 如果服务段没返回数据的话 就在这一句 停30S 我想缩短时间 咋办?
还有 在发送接收过程中 我要是想终止该咋办,现在发送接收过程中好像死了一样,就是堵塞模式也该有终止的办法啊?请高手赐教!
 
咋没人回应呢
 
设置ReadTimeout属性为你需要等待的时间
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
804
import
I
I
回复
0
查看
589
import
I
后退
顶部