Q&A

  • 클라이언트가 서버에 접속할때...(window socket error)
저의경우는 델파이 4.0을 사용합니다..

클라이언트에서 서버쪽이 실행될때까지...접속을 timer를 사용하여

지정된 시간마다 connect을 시도합니다...

근데...한 200번이후에 connect을 하면 다음같은 메세지가 나타나고 죽습니다.



window socket error 10055 on api connect



답변해 주시면 감사하겠습니다.



ps) connect을 할때 서버가 준비가 안된상태이므로 error event가 발생하는건

당연한데, 위와 같이 200번이후에는 disconnect event도 발생하더군요...

3  COMMENTS
  • Profile
    김원식 2000.07.13 03:00
    보내주신 소스 잘 보았습니다.



    아래는 보내주신 소스입니다.



    procedure TForm1.Timer1Timer(Sender: TObject);

    begin

    ClientSocket1.Close;

    if ClientSocket1.Active then

    exit

    else

    ClientSocket1.Active := True;

    end;



    잘못된 부분 설명......



    ClientSocket1.Active := True; 를 하셨어도 즉시 소켓을 사용할 수 있는 것은



    아니구요, 반대로 ClientSocket1.Active := False; 가되어도 자원을 시스템에게



    되돌려준 상태는 아닐 수 있습니다.



    보다 정확한 방법은 ClientSocket1.Socket.Connected를 참조하는 것입니다.



    만약 위와 같은 소스를 그대로 이용하시고자 한다면 다음과 같이 해보세요



    procedure TForm1.Timer1Timer(Sender: TObject);

    begin

    // 타이머에 대한 동기화를 위해 사용합니다.

    Timer1.Enabled := False;



    ClientSocket1.Close;

    if not ClientSocket1.Active ClientSocket1.Open;



    Timer1.Enabled := True;

    end;























    이수한 wrote:

    > 저의경우는 델파이 4.0을 사용합니다..

    > 클라이언트에서 서버쪽이 실행될때까지...접속을 timer를 사용하여

    > 지정된 시간마다 connect을 시도합니다...

    > 근데...한 200번이후에 connect을 하면 다음같은 메세지가 나타나고 죽습니다.

    >

    > window socket error 10055 on api connect

    >

    > 답변해 주시면 감사하겠습니다.

    >

    > ps) connect을 할때 서버가 준비가 안된상태이므로 error event가 발생하는건

    > 당연한데, 위와 같이 200번이후에는 disconnect event도 발생하더군요...

  • Profile
    김원식 2000.07.13 02:17
    10055는 "No Buffer Space Available"로



    소켓이 내부적으로 사용하는 버퍼를 더이상 확보하지 못한다는 메세지 입니다.



    작성하신 프로그램에서 소켓이 정상적으로 작업을 마쳐야하는데,



    혹 프로그램이 소켓의 자원을 확보한체 종료되지는 안나 살펴보세요.



    또한, 다른 사람이 만든 컴포넌트를 사용하신다면, 반드시 점검 후에



    사용하시는 것도 잊지 마시구요......



    즐거운 시간 되세요



    www.burumetalk.com

    wonsig@chollian.net







    이수한 wrote:

    > 저의경우는 델파이 4.0을 사용합니다..

    > 클라이언트에서 서버쪽이 실행될때까지...접속을 timer를 사용하여

    > 지정된 시간마다 connect을 시도합니다...

    > 근데...한 200번이후에 connect을 하면 다음같은 메세지가 나타나고 죽습니다.

    >

    > window socket error 10055 on api connect

    >

    > 답변해 주시면 감사하겠습니다.

    >

    > ps) connect을 할때 서버가 준비가 안된상태이므로 error event가 발생하는건

    > 당연한데, 위와 같이 200번이후에는 disconnect event도 발생하더군요...

  • Profile
    이경문 2000.07.13 02:38
    procedure TForm1.OnError...;

    begin

    Socket.Close;

    ErrorCode := 0;

    end;



    Socket컴포 OnError에서 Socket.Close를 반드시 해 주세요. Close를 해 줘야 깔끔하게 정리됩니다.

    그리고 ErrorCode 에 0을 집어 넣으면 에러메세지가 뜨지 않게 되지요.

    그 다음은 OnDisconnect가 불리게 되므로 그때 다시 Timer를 작동시켜서 일정시간이 지나게 되면 다시 Connect를 요청하게 되지요.

    저도 이런현상을 보았는데 버그 잡는데 엄청 고생했습니다.

    쩝, 주접이었습니다.