C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[50225] ActiveX에서 isc Socket 사용시 10057에러
이경준 [] 2366 읽음    2007-08-10 11:04
ics 소켓을 사용해 TCP 통신을 하려고 합니다.
현재 ActiveX에서 TCP통신을 하는거라...          클라이언트입니다.
서버로 부터 커넥션 허락 메시지가 오기를 기다리는 중에  브라우저가 꺼지면  10057에러 메시지가 뜹니다.
MSDN을 찾아보니 소켓이 연결안된 상태라서 데이터를 못보낸다는건데요..

WSAENOTCONN
10057 A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied.

폼 프로그래밍에서 커넥션 요청하고 바로 WSocket->Close()하면 뜨는 에러와 같습니다.

Connect 버튼 누르면 호출되는 함수
void TIWSSocketClient::Connect(String ip, String port, String proto)
{
    WSocket->Addr = ip;
    WSocket->Port = port;
    WSocket->Proto = proto;
    WSocket->Connect();
    m_MainForm->Memo1->Lines->Add(WSocket->State);
}

Close 누르면 호출되는 함수
void TIWSSocketClient::Close()
{
    WSocket->Close();
}

이경우에는

void TIWSSocketClient::Close()
{
    if(WSocket->State == 3)        // WSocket이 Connecting 상태일때
         WSocket->Close();
}

이렇게 해결하면 되겠는데 ActiveX에서는 내부적으로 자동으로 WSocket->Close() 를 호출하는게 아닌가 합니다.
정확한 원인인지는 모르겠지만...
혹시 짐작가시는 부분이 있거나 해결책이 있으시면 도와주세요..
감사합니다.

+ -

관련 글 리스트
50225 ActiveX에서 isc Socket 사용시 10057에러 이경준 2366 2007/08/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.