WIZnet Developer Forum

Socket Close 검지

WIZ550S2E 를 서버로 설정하고
제 프로그램에서는 TCP Client로 설정하여 기본 송수신 동작은 확인하였습니다.
제 프로그램은 Windows 7 기반으로 작성된 Client 가 되겠습니다.
그런데, WIZ550S2E 모듈의 파워를 껐다가 키는 등 리셋이 발생하면
이 전에 Client에서 연결해 논 Socket은 Invalid해져 통신이 안되겠죠.

  1. 이런 상황에서 해당 Socket이 Invalid해졌다는 것을 어떻게 검지 할 수 있나요 ? 결국 Socket 재연결을 자동으로 하려는 것이 목적이죠.
  2. WIZ550S2E가 아닌 소켓을 지원하는 다른 장비 (리눅스)에서는 해당 장비가 리셋되면 (유사한 상황), Client의 Socket에서 수신 에러를 리턴하여 Socket이 Invalid 해졌다는 것을 검지하므로 Socket 재 연결이 가능합니다.
    여기서 테스트 했던 프로그램은 윈도우즈7에서 동일한 소스를 기반으로 작성된 것입니다.

하나 더 추가적인 상황입니다.
제 시스템에는 GigE 카메라가 1대 장착되어 있어 이 카메라 접근도 Socket방식으로 이루어 집니다.
그런데 이 GigE 카메라에서 제공하는 초기화 라이브러리를 호출하는 시점에 WIZ550S2E 모듈의 Socket이 닫히는 현상이 있군요.
WIZnet Conf에서 'Search’를 통해 Network Status가 'Disconnected’로 나타나는 걸 보고 알게 되었습니다.

이런 상황에 대해 문제 해결이 되지 않는다면 WIZ550S2E 모듈 사용이 러려울 것 같군요.
도움 부탁합니다.


안녕하세요~

  1. 이런 상황에서 해당 Socket이 Invalid해졌다는 것을 어떻게 검지 할 수 있나요 ? 결국 Socket 재연결을 자동으로 하려는 것이 목적이죠.
    [color=#0000FF]서버가 정상적인 disconnect 과정을 거치지 않고, 위에서 언급한 상황(power off, reset)이 발생 했다면,
    클라이언트가 Invalid 한 Socket의 상태를 알 수 없습니다.
    하지만, 클라이언트가 서버쪽으로 데이터를 보내면 지금 소켓이 정상이 아님을 알 수 있습니다. [/color]

  2. WIZ550S2E가 아닌 소켓을 지원하는 다른 장비 (리눅스)에서는 해당 장비가 리셋되면 (유사한 상황), Client의 Socket에서 수신 에러를 리턴하여 Socket이 Invalid 해졌다는 것을 검지하므로 Socket 재 연결이 가능합니다.
    여기서 테스트 했던 프로그램은 윈도우즈7에서 동일한 소스를 기반으로 작성된 것입니다.
    [color=#0000FF]장비(서버) <------> 프로그램(클라이언트)
    장비가 리셋되면 프로그램이 장비로 부터 어떠한 값(수신 에러)을 받는다는 말인가요?[/color]

제 시스템에는 GigE 카메라가 1대 장착되어 있어 이 카메라 접근도 Socket방식으로 이루어 집니다.
그런데 이 GigE 카메라에서 제공하는 초기화 라이브러리를 호출하는 시점에 WIZ550S2E 모듈의 Socket이 닫히는 현상이 있군요.
WIZnet Conf에서 'Search’를 통해 Network Status가 'Disconnected’로 나타나는 걸 보고 알게 되었습니다.
[color=#0000FF]아마도 카메라 라이브러리에서 FIN 패킷을 보낼 듯 합니다.
패킷캡쳐 프로그램(와이어 샤크)을 이용하여 해당 증상이 일어나는 시점의 패킷을 올려 주시면 확인해 보겠습니다.[/color]

[quote=“Ricky”]안녕하세요~

  1. 이런 상황에서 해당 Socket이 Invalid해졌다는 것을 어떻게 검지 할 수 있나요 ? 결국 Socket 재연결을 자동으로 하려는 것이 목적이죠.
    [color=#0000FF]서버가 정상적인 disconnect 과정을 거치지 않고, 위에서 언급한 상황(power off, reset)이 발생 했다면,
    클라이언트가 Invalid 한 Socket의 상태를 알 수 없습니다.
    하지만, 클라이언트가 서버쪽으로 데이터를 보내면 지금 소켓이 정상이 아님을 알 수 있습니다. [/color]

  2. WIZ550S2E가 아닌 소켓을 지원하는 다른 장비 (리눅스)에서는 해당 장비가 리셋되면 (유사한 상황), Client의 Socket에서 수신 에러를 리턴하여 Socket이 Invalid 해졌다는 것을 검지하므로 Socket 재 연결이 가능합니다.
    여기서 테스트 했던 프로그램은 윈도우즈7에서 동일한 소스를 기반으로 작성된 것입니다.
    [color=#0000FF]장비(서버) <------> 프로그램(클라이언트)
    장비가 리셋되면 프로그램이 장비로 부터 어떠한 값(수신 에러)을 받는다는 말인가요?[/color]

제 시스템에는 GigE 카메라가 1대 장착되어 있어 이 카메라 접근도 Socket방식으로 이루어 집니다.
그런데 이 GigE 카메라에서 제공하는 초기화 라이브러리를 호출하는 시점에 WIZ550S2E 모듈의 Socket이 닫히는 현상이 있군요.
WIZnet Conf에서 'Search’를 통해 Network Status가 'Disconnected’로 나타나는 걸 보고 알게 되었습니다.
[color=#0000FF]아마도 카메라 라이브러리에서 FIN 패킷을 보낼 듯 합니다.
패킷캡쳐 프로그램(와이어 샤크)을 이용하여 해당 증상이 일어나는 시점의 패킷을 올려 주시면 확인해 보겠습니다.[/color][/quote]

  1. 서버쪽으로 데이터를 날려서 해결해야 할 듯합니다.
  2. 2)번에 말씀드린 다른 장비에서도 동일한 문제 상황이 발생됩니다. 사례를 잘 못 들어 설명드렸었네요.–;;;
  3. 추가로 질문드린 내용도 제 프로그램 로직의 문제로 밝혀졌습니다.

감사합니다.

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.