Q&A

  • Indy Server Socket에서 에러가 납니다..
1. 작업을 완료했습니다

2. 현재 연결은 원격 호스트에 의해 강제로 끊겼습니다

Excute에서

<--
try
    Cmd := AThread.Connection.ReadLn(FOOTER);

    if Pos( HEADER, Cmd ) = 0  then
    begin
      AddLog_Memo('Wrong Header..' + Cmd);
      Exit;
    end
    else
    begin
      Cmd := Copy( Cmd, Pos( HEADER, Cmd ), Length(Cmd) ); //헤더가 이상하게 넘어오는 걸 방지한다.
    end;


    if not RequestPeerMessage( Cmd, AThread ) then AddLogError_Memo('Peer Msg Process..' + Cmd);

  except
    on E: EIdTCPServerError do
    begin
      if (GetLastError = 10054) then AddLogError_Memo('IdServerExecute Function Except Messsage : ' + SysErrorMessage(GetLastError));
      if (not Assigned(AThread.Connection)) or (not AThread.Connection.Connected) then Exit;
      AThread.Connection.WriteLn(FOOTER);
      if (AThread.Connection.Connected) then AThread.Connection.Disconnect;

      Application.ProcessMessages;
      Sleep(5);
      Exit;
    end;

    on E : Exception do
    begin
      AddLogError_Memo('IdServerExecute Function Except Messsage : ' + SysErrorMessage(GetLastError));
      if (not Assigned(AThread.Connection)) or (not AThread.Connection.Connected) then Exit;
      AThread.Connection.WriteLn(FOOTER);
      if (AThread.Connection.Connected) then AThread.Connection.Disconnect;

      Application.ProcessMessages;
      Sleep(5);
      Exit;

-->

이것처럼 예외처리했는데...일부 클라이언트들이 에러가 나면서 끊기는 이유가 뭘까요?

위 메세지가 의미하는걸 잘 모르겠어요~~

답변 좀 부탁드려요~~~

테스트 프로그램으로 한 PC에서 100개의 클라이언트를 붙여서 For Loop돌면서 메세지를 보내다가

안되서 보니깐...저런 메세지 나오면서 연결이 끊깁니다..

ㅠㅠ 도와주세요~
1  COMMENTS
  • Profile
    이강석 2008.10.07 03:22
    방화벽 때문에 OS에서 연결을 끊어버릴 수도 있나요??