2010-01-08 3 views
0

나는 공공연한 서비스가 인터넷에 앉아있는 경우를 가지고 있으며 서버가 일반 가정 네트워크에 앉아있는 임베디드 장치를 설계하도록 연락 할 수있는 기능을 원합니다. 필수.방화벽 뒤에 서버 알림 클라이언트를 두는 방법

기기가 서버를 폴링하여 업데이트 등을받을 수 있음을 알고 있지만 1) 서버가 작업을 수행 할 때와 기기 폴링을 수행 할 때 사이에 지연이 발생할 수 있으며 2) 시간이 지남에 따라 많은 쓸모없는 트래픽이 발생합니다.)가 생성되었습니다.

누구든지이 작업을 수행하는 방법에 대한 제안 사항이 있습니까? 필자의 초기 임베디드 장치는 UPNP를 사용하여 홈 라우터에서 포트 전달 규칙을 생성 한 다음 해당 포트를 서버에 등록합니다. 그런 다음 서버는 해당 주소 (HTTP를 통해 방화벽 등의 방해를받지 않고 라우팅되는 등)에 대한 HTTP 요청을 생성 할 수 있습니다. 디바이스가 포워드 룰을 생성 할 수 없다면 폴링 메소드로 되돌아갑니다.

이 말이 맞나요? 누구든지 이런 종류의 일과 함께 할 수있는 경험이 있습니까? (클라이언트는 임베디드 리눅스, 서버 .NET에서 C++이 될 것입니다.)

+0

솔직히, 아마 많은 사람들이/회사 허용하거나 UPNP를 차단하지 않는 방법 주어진 UPnP를 솔루션을 구현하는 가치도 없습니다. – Joe

답변

0

얼마나 많은 장치/네트워크를 사용할 것인지, 소프트웨어/구성에 대한 제어가 얼마나되는지에 달려 있습니다.

당신은 UPNP에 대해 이야기하고 있기 때문에 많은 클라이언트 네트워크가있을 것이라는 것을 의미합니다. 라우터 구성/하드웨어를 제어 할 수 없다면 UPNP 솔루션을 안정적으로 작동시키는 데 많은 어려움을 겪을 것입니다 .

또한 임베디드 장치에 실제 IP 주소가 없다는 것을 나타내는 portforwarding을 언급합니다.

방화벽을 차단하지 않기 위해 HTTP를 사용하고 싶지만 대부분의 방화벽/라우터 등은 똑똑하지 않습니다. 포트 번호에서만 순전히 차단이 이루어집니다. NAT 라우터 뒤에 여러 장치가있는 경우 HTTP 컨텐트를 기반으로 요청을 중계하는 컨트롤러를 구현하지 않는 한 비표준 포트를 사용하여 장치를 처리해야합니다.

내가 볼 수있는 유일한 해결책은 내장 된 장치를 서버에 연결하고 이벤트가 발생할 때까지 기다리는 것입니다.

C.는

+0

건배. 이 경우 UPNP를 폐기 하겠지만 여전히 장치의 기능을 구현하지만 사용자 \ 관리자가 라우터 등의 포트 포워딩을 수동으로 구성하는 '고급 옵션'으로 남겨 둡니다. – Rosstified