Q&A

  • Socket연결에 관한 추가 질문입니다.!!!
우선 제가 작성한 내용은 아래와 같습니다...

procedure TMainForm.ClientSocket1Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
    if ErrorCode <> 0 then
        ErrorCode:= 0;

    Memo1.Lines.Add('[Error]');
    ClientSocket1.Active:= False;
    ClientSocket1.Close;
    ErrTimer.Enabled:= False;

    ClientSocket1.Active:=True;
    ErrTimer.Enabled:= True;
end;

내용인 즉 통신상태가 불량(제가 한 Test는  LAN Cable을 제거한 상태임)할
경우 ClientSocket1의 Active를 False한뒤 Close한후

다시 재연결을 계속하여 실행하는 것인데 중간에 Error Message가
Display되네요

내용은

"Windows socket error: 대기열이 또는 버퍼가 부족하여 소켓에서
해당작업을 진행하지 못했습니다(10055), on API 'connect'"

좀 도와 주십시요.. 부탁드릴께요.!!!

5  COMMENTS
  • Profile
    윤수아 2003.10.25 03:34


    ClientSocket1.Active:= False; 이렇게 코딩하지 마시고요..
    넘어오는 인자인 Socket을 이용해 Socket.Close; 해주세요..
    그리고 제가 저번에도 말씀 드렸다시피... 블록킹 소켓이 아니기때문에
    위의 코딩은 문제가 있습니다.
    Error 이벤트에서 재연결을 설정해주지 마시고요...
    Timer를 돌려서 연결 여부를 확인해서...접속하는 식으로 바꾸세요...
    연결여부 확인은 변수를 하나 선언하셔서... 연결시 True, Error나 DisConnect시 False로 돌려놓으시고...그 변수가 False이면 연결 시도하고 그 값을 True로 바꾸는 식으로 하시던지...
    아니면 Connected라는 속성을 이용하시던지 하세요..


  • Profile
    김성근 2003.10.25 03:44
  • Profile
    윤수아 2003.10.25 03:56
    인디컴포넌트를 쓰세요.. 델파이 6버전부터는 기본 컴포넌트로 깔리고..
    5버전이라면 인디사이트에 가셔서 가져다가 설치해서 쓰시면 됩니다.


  • Profile
    이성훈 2003.10.25 02:44
    ErrorCode := 0;
    요것만 추가하세요..
    그럼 즐푸
  • Profile
    김성근 2003.10.25 02:51