clientsocket 简单的问题 ( 积分: 100 )

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

zzs3842

Unregistered / Unconfirmed
GUEST, unregistred user!
哪位高手帮我看看下面代码有错么
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket1.Active := true;
ClientSocket1.Socket.SendText('ok');
end;

我想在一个按钮事件里使ClientSocket1=true 然后发送数据
 
ClientSocket1.Active := true;后,要等待一段时间才会真正连上。
所以,第二句不一定能执行成功。
为什么一定要在一个事件里写呢?第二句可以写在
ClientSocket1.OnConnect里面
 
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket1.Active := true;
ClientSocket1.Socket.SendText('ok');
end;
//这样的代码使用阻塞方式就可以了, 要不然就象楼上所说
 
上面两位大侠都对。
楼主一定要理解好ClientSocket的异步方式(默认)和阻塞方式才能用它写出通讯程序的。
这个就是解决你问题的最关键思路了
异步:就是处理的结果是过会才知道--通过事件句柄
阻塞:就是等处理有了结果才返回 --通过抛出异常或返回结果
 
我的处理方式是:客户端发出连接请求,服务端收到回返回连接成功的信息,如果客户端收到该信息了,则证明连接完成,则此后可以发送其它信息给服务器了
 
后退
顶部