200分求助:为什么 ClientSocket1.Open;之后马上用 ClientSocket1.Socket.SendText(),

  • 主题发起人 主题发起人 sky2008
  • 开始时间 开始时间
S

sky2008

Unregistered / Unconfirmed
GUEST, unregistred user!
200分求助:为什么 ClientSocket1.Open;之后马上用 ClientSocket1.Socket.SendText(),的话服务端收不到?而在open延时1秒后再sendText(),却能马上收到!是 borland 的bug? (200分)<br />procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Open;
ClientSocket1.Socket.SendText( timetostr( now ()));
end;


第一次点Button1时,服务器端都收不到数据,如果改成下面的却可以。为找了半天找不到答案
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Open;
sleep(0);
application.ProcessMessages;
ClientSocket1.Socket.SendText( timetostr( now ()));
end;
 
有 BUG 是很正常 那里有没有 BUG 的软件
 
SOCKET 有同步和异步工作方式,一般默认都是异步方式。在异步方式下,就有这样的问题。因为建立链接需要时间,但函数直接返回了,并不是建立链接以后才返回。
 
怎么设为同步方式呢?
 
用异步方式的话
open成功后会触发onconnect事件,在该事件中接收发送第一次信息,然后用onread,onwrite事件。
 
多人接受答案了。
 

Similar threads

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