조건은 쓰레드를 사용해선 안됩니다.
그래서 IdTCPClient를 통해서 데이터를 송신하고(서버쪽에서 데이터 넘어오는거 까진 확인을 했습니다.)
바로 다음에 무한루프를 이용해 데이터를 수신하는 부분을 작업하려 하는데, 영 데이터가 넘어오지 않고 있어,
도움을 요청하고자 합니다. 아래는 제가 코딩한 소스 입니다.
try
TCPClient.Connect();
page := TStringList.Create;
try
tmpStr := '';
TCPClient.InputBuffer.Clear;
I := TCPClient.InputBuffer.Size;
TCPClient.WriteLn('test Message[Client]');
while true do
begin
if Pos(#13, tmpStr)>0 then break;
TCPClient.ReadBuffer(tmpStr[1],I);
Memo1.Lines.Add(tmpStr);
end;
except
end;
finally
TCPClient.Disconnect;
page.Free;
end;
-- tmpStr는 String으로 선언하였습니다.
확실한건 서버에서 패킷은 계속 보내줍니다. 허나 Memo1에는 아무것도 찍히지 않고 있네요.
무엇인 문제인지 지식이 짧아 답을 찾을수가 없어, 이렇게 도움을 요청 합니다.
작업환경은 Delphi 6.0, Indy 9.0을 사용 합니다.
수고 하십시요.
우선은 데이타 수신이 잘되는지 확인을 위해 인디 데모에 있는 부분처럼
타이머를 올리시고 데이타 수신이 계속 발생하는지 확인부터 해보시는게 어떨까 싶네요..
아래는 인디 9 Chat 예제에 있는 클라이언트 수신부분입니다.
procedure TForm1.Timer1Timer(Sender: TObject);
var
Com,
Msg : String;
begin
if not IdTcpClient1.Connected then
exit;
Msg := IdTCPClient1.ReadLn('', 5); // <- 이 부분이 수신 부분입니다.
// 이곳에서 수신된 데이타를 출력해보시면 되겠지요..
if Msg <> '' then
Msg 출력
...
end;
그럼.. 즐거운 프로그래밍 하시구요..