Delphi 간단한 TCP 채팅 프로그램 (2): 양방향 전송

1025 단어 Delphi
이전 글에서 우리는 서버에서 클라이언트에게 데이터를 보내는 것을 실현하지 못했다. 주로 델피 7이 자체로 가지고 있는 인디 컨트롤러에 버그가 존재하기 때문에 우리는 먼저 이를 인디 10으로 업그레이드해야 한다. 여기서 다운로드할 수 있다.
IdTCP 클라이언트에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);

좋은 웹페이지 즐겨찾기