인디를 안쓴지 오래 되서 가물 거리고,
제 기억이 맞는 기억인지도 확신이 안서서 넘어갔는데,
계속 무답변이라 일단 ^^;
OnExecute 이벤트는 메시지(패킷) 수신이 없어도 발생할 수 있는 것으로 기억합니다.
그러나, AContext.Connection.IOHandler.ReadLn 이 블록하는 것이 정상일 텐데,
이 부분이 블록이 안되면 (타임 아웃 지정이 되어 있다던가, 그게 가능했던가요?)
해당 문제가 발생 할 수도 있을 듯 합니다.
저는 주로 바이너리 형태로만 작업을 했었기 때문에 더욱 긴가 민가 하네요.
dodorian 님이 쓰신 글 :
: idtcpserver의 excute 부분에 아래처럼 단순 접속 클라이언트 정보를 memo에 뿌리는 경우입니다.
: procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
: var
: stTemp: String;
: MSG: String;
: begin
: Memo1.Lines.Add('testestsetst');
: stTemp := AContext.Connection.Socket.Binding.PeerIP;
: MSG := AContext.Connection.IOHandler.ReadLn;
: Memo1.Lines.Add(stTemp + ' : ' + MSG);
:
: end;
: 어찌 하다가 2개의 프로그램을 작성하였는데 telnet client 연결시에
:
: 한 프로그램은 단 1줄로 클라이언트 접근을 표시하는데 다른 프로그램에서는
:
: 지속적으로 클라이언트 요청이 오는 것으로 표시가 됩니다. (스크롤 생기면서 위의 메세지가 쭈르륵...)
:
:
:
: 소스 코드 틀린것은 port뿐인데... 이유가 멀까요...
:
:
:
: 답변에 미리 감사드립니다.
:
:
:
:
|