2010-02-03 2 views
1

나는 포트 1002가 열리도록 요구하는 소켓 프로그램을 가지고 있으며이 포트를 자유롭게 사용할 수 있도록 C++에서 포트 포워드하는 방법을 알고 싶다.C++에서 포트 포워드하는 방법?

+1

이 프로그램을있는 그대로 사용할 수없는 이유와 "포트 전달"이 문제의 해결책이라고 생각하는 이유를 설명해야합니다. –

+0

전송을 포트 포워드 할 수있는 경우에도 금지 된 포트 또는 사용중인 포트를 벗어날 수 없습니다. 대신 소켓 프로그램 설정을 변경하십시오. – shinkou

+0

이 질문을 읽기에는 다소 무리가 있지만 부정확 할 수 있습니다. "http://linux.die.net/man/1/forward를 Windows에서 컴파일하려고합니다. 그래서 다른 프로그램을 다른 포트를 사용하여 실행할 수 있습니다. 하나는 사용하도록 설계되었습니다. " C++과 어떤 관계가 있는지 확신 할 수 없습니다. – bk1e

답변

6

포트 포워딩은 일반적으로 라우터에서 클라이언트 시스템의 업스트림에서 수행됩니다.

일부 응용 프로그램은 포트를 공개적으로 열기 위해 업스트림 라우터와 통신하기 위해 범용 플러그 앤 플레이를 사용하지만 어떤 방식으로 실행되는지 보려면 많은 연구를해야한다고 생각합니다.

-1

프로그래밍 언어로 포트 포워드 할 수 없습니다. 이것은 라우터에 설정된 것입니다.

+0

UPnP는이를 위해 XML API를 제공합니다. 많은 (모든 라우터는 아닐지라도) 많은 라우터가 이것을 즉시 사용할 수 있습니다. – Luke

+0

라우터가 소프트웨어로 포워드하지 않으면 어떻게 관리하는지 잘 모르겠습니다 ... –

+0

@Jon : 매우 귀엽다. OP의 이해 수준을 감안할 때, 나는 (당신이 확신 하듯이) 제 질문이 도움이되었다고 생각합니다. – Hogan

3

그래서 UPnP 또는 NAT-PMP가 필요합니다. 시스템에 이러한 프로토콜을 수행하기위한 라이브러리가 있거나, 테스트 할 Linux 또는 BSD에서 실행할 서버와 클라이언트 라이브러리가 모두있는 muniupnp을 사용할 수 있습니다.

보장할만한 것은 없으므로 STUN, TURN 또는 ICE를 추가로 사용해야 할 수도 있습니다. 그 일을하기위한 도서관이 있습니다 here.

항상 기억해야 할 때가 있습니다. IPv6를 구현하십시오. 때로는 IPv4가 작동하지 않는 경우에도 작동합니다. 사용자가 v6 및 Teredo를 설치하도록 권장합니다.

1

Windows XP부터 Microsoft는 UPnP library을 제공합니다. 라이브러리가 네트워크 장치와 통신하는 기본 사항을 제공하기 때문에 실제로 사용하는 것은 상당히 복잡합니다. 포트 전달과 같은 장치 별 작업을 수행하려면 다양한 UPnP specifications을 연구해야합니다. 저를 믿으십시오, 이것은 상대적으로 작은 달성하기 위하여 할 것이다 많은 노력이다; 사용자가 필요한 포트를 전달하기 위해 라우터 매뉴얼을 참고해야 할 수도있는 어딘가에 문서에 넣어 두는 것이 좋습니다. 이것은 거의 모든 사람들이하는 일입니다.

+0

아멘. 매우 어렵습니다. –

+0

UPnP는 프로그래머로서 사용하기가 어렵습니다. 라우터에서 포트 포워드를 성공적으로 구성하는 것이 보통의 "DHCP? IP 주소 란 무엇입니까?" 사용자. NAT와 방화벽은 좋은 사용자 경험에 적대적인 기술의 좋은 예이며, 시스템과 일반 사용자는 둘 다 측면에서 통신하기가 매우 어렵습니다. 알다. –

0

가장 인기있는 방법은 사용자가 방화벽에서 열어야하는 포트를 알려주는 문서를 작성하는 것입니다.

+0

내 경험에 따르면 사용자가 인터넷에서 포럼 게시물을 검색하여 응용 프로그램이 어떤 인바운드 포트를 사용하는지 알려주는 것이 일반적입니다. –