none
Windows CE에서 CSocket 사용 문제 RRS feed

  • 질문

  • Windows CE에서 CSocket 사용에 문제가 있어 질문드립니다.


    클래스 멤버변수로 소켓을 하나 만들기 위해 CSocket sock; 코드를 넣고

    생성자에서 AfxSocketInit(); 로 초기화하고

    또 생성자에서 다음 코드로

    if(!sock.Create()) AfxMessageBox(_T("소켓을 생성할 수 없습니다.")); 소켓을 생성합니다.


    버튼을 하나 만들고 누르면 연결하도록 다음과 같이 하였습니다.

    if(!sock.Connect(IP, 49374)) AfxMessageBox(_T("서버에 연결할 수 없습니다."));


    문제는 위의 Connect함수만 호출하기만 하면 연결했다가 끊어집니다;;;;;

    (서버프로그램에서 연결하고 바로 끊어지는것을 확인했습니다.)


    혹시나 일반윈도우에서도 그럴까 싶어 같은 코드를 사용해서

    일반 윈도우 프로그램으로도 만들어 테스트 해봤는데 정상적으로 동작합니다.


    어떻게 해결 방법이 없나요?



    • 편집됨 주현빈 2012년 3월 5일 월요일 오전 6:38
    2012년 3월 5일 월요일 오전 6:35

답변

  • 연결했다 끊어지는걸 보면 소켓시스템에 문제가 있다기 보다는 환경적인 문제이거나 코드를 구성하시다가
    실수를 하신듯한데, 지금 이야기 하신 내용만으로는 어떤 문제가 있는지를 추측하기가 어렵습니다.
     

    이런 실수를 하시지는 않으셨겠지만, 예전에 제가 알던 사람이 동일한 문제로 질문하길래 코드를 봤더니
    CSocket sock; 이라고 멤버변수로 선언해놓고 또다시 버튼 처리기에 CSocket sock; 라고 또 선언하고
    그 밑에 sock.Connect 를 사용해서 접속이 끊어졌던 경우가 있었습니다. 이름이 동일하면 멤버변수보다
    지역변수가 우선시 처리되기 때문에 해당 지역변수로 접속했다가 함수가 끝나면서 지역변수 sock 객체가
    사라지면서 접속도 해제되었던것이였습니다.

    이런 문제는 아니시겠지만, 참고하시라고 글 남깁니다.


    2012년 3월 6일 화요일 오전 6:03
    중재자

모든 응답

  • 연결했다 끊어지는걸 보면 소켓시스템에 문제가 있다기 보다는 환경적인 문제이거나 코드를 구성하시다가
    실수를 하신듯한데, 지금 이야기 하신 내용만으로는 어떤 문제가 있는지를 추측하기가 어렵습니다.
     

    이런 실수를 하시지는 않으셨겠지만, 예전에 제가 알던 사람이 동일한 문제로 질문하길래 코드를 봤더니
    CSocket sock; 이라고 멤버변수로 선언해놓고 또다시 버튼 처리기에 CSocket sock; 라고 또 선언하고
    그 밑에 sock.Connect 를 사용해서 접속이 끊어졌던 경우가 있었습니다. 이름이 동일하면 멤버변수보다
    지역변수가 우선시 처리되기 때문에 해당 지역변수로 접속했다가 함수가 끝나면서 지역변수 sock 객체가
    사라지면서 접속도 해제되었던것이였습니다.

    이런 문제는 아니시겠지만, 참고하시라고 글 남깁니다.


    2012년 3월 6일 화요일 오전 6:03
    중재자
  • 안녕하십니까? 주현빈 님,
    Microsoft TechNet의Forum 사이트를 방문해 주셔서 감사합니다.

    문의 하신 ”Windows CE에서 CSocket 사용 문제”에 대해 답변드리겠습니다.

    [원인]
    WSA_INVALID_HANDLE (운영 체제 종속)
    번역: 지정된 이벤트 개체 핸들이 잘못되었습니다.
    설명: 프로그램이 있는 이벤트 개체를 사용하려고 했지만 지정된 핸들이 올바르지 않습니다.

    WSA_INVALID_HANDLE 6

    Specified event object handle is invalid.
    An application attempts to use an event object, but the specified handle is not valid. Note that this error is returned by the operating system, so the error number may change in future releases of Windows.

    [해결책]
    올바르지 않은 이벤트 개체를 확인하시기 바랍니다.

    [참조문서]
    오류 코드, 값 및 의미를 Windows 소켓
    Windows Sockets Error Codes

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.
    제시해 드린 답변이 도움이 되었기를 바랍니다.
     
    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다.

    2012년 3월 6일 화요일 오전 6:32
    중재자