Delphi简单TCP聊天程序(二):双向传输

  在上一篇文章中,我们并没有实现服务器端发送数据到客户端,主要原因是Delphi 7自带的Indy控件存在Bug,所以我们首先需要将其升级为Indy 10,可在这里下载到。

  由于IdTCPClient没有onExecute事件,所以我们要自己监听,新建一个线程来做这个就再好不过了,先写一个监听的procedure

procedure TMainForm.listen;
var
  s: string;
begin
  while true do
  begin
    if not MainForm.connected then continue;
    try
      s := MainForm.TCPClient.Socket.ReadLn('');
    except
    end;
    if s = '' then continue;
    MainForm.console.Lines.Add(MainForm.TCPClient.Host + ' ' + getTime);
    MainForm.console.Lines.Add(s);
  end;
end;

  这段代码很简单,只是不停地readln,并把信息显示出来,然后再connect过程中加上一句

procedure TMainForm.connect(host: string);
begin
  ......
  listenThread := createThread(nil, 0, @TMainForm.listen, nil, 0, threadId);
end;
创建监听线程就可以了
最后在FormClose事件中需要用TerminateThread来终止这个线程

TerminateThread(listenThread, exitcode);



  


你可能感兴趣的:(Delphi)