2011-08-22 7 views
0

서버 (www.server.com:1112)에서받은 데이터를 일부 포트 xxxx를 통해 내 iPhone 응용 프로그램으로 전달하려면 라우터를 만들어야합니다. 나는 전혀 모른다. 내 응용 프로그램은 포트를 수신하지만 서버가 xxxx 포트로 데이터를 보내는 동안 라우터는이를 거부합니다.iPhone에서 포트 포워딩

라우터에서 수동 구성을했는데 정상적으로 작동합니다. 그러나 모든 사용자가 동일한 작업을 수행 할 것으로 기대할 수는 없으며 이러한 수동 구성을 수행 할 수 없습니다. 누구든지 아이폰 용 샘플 코드를 제공하여 제발 나를 도울 수 있습니까?

고지.

+0

라우터에 문제가 있습니다 - 라우터에 내장 된 방화벽이 해당 포트의 트래픽을 거부합니다. iPhone에서 라우터를 마술처럼 제어 할 수는 없습니다. 가능한 경우에도 사용자는 모두 다른 라우터와 방화벽을 가지고 있습니다! – lxt

답변

1

사용자가 방화벽에서 포트를 수동으로 열 것으로 기대할 수는 없지만 방화벽이이를 허용한다는 것을 기대할 수는 없습니다.

uPNP를 사용하고 호환 라우터가 BitTorrent와 비슷한 포트 전달을 설정하는 것이 좋습니다. 나는 TCMPortMapper 프레임 워크를 가지고 행운을 빕니다. subethaedit과 같은 앱에서 프로덕션 환경에서 사용되었습니다. 마음에

TCMPortMapper *pm = [TCMPortMapper sharedInstance]; 
[pm addPortMapping: 
[TCMPortMapping portMappingWithLocalPort:1337 # local port iPhone listens on 
        desiredExternalPort:13337 # remote port you want router to listen on 
         transportProtocol:TCMPortMappingTransportProtocolTCP 
           userInfo:nil]]; 
[pm start]; 

곰 : 뻔뻔 포트를 여는 것은이 같은 간단, 문서로부터 추출하려면

  1. 위의 요구 사항이 지속적으로 실행되고 (이 블록 메인 스레드) 포트에 대한 열려있어. 백그라운드에서 실행하고 알림을 등록하려고합니다. 보다 자세한 예제는 documentation을 참조하십시오.
  2. uPNP는 라우터가 주어진 포트를 열 것이라고 '요청'합니다. 거절하거나 처음부터 지원하지 않을 수 있습니다. 사용자에게 알릴 수는 있지만 성공할 수있는 방법은 없습니다. 앱에서이 문제를 해결해야합니다.
+0

TCMPortManager를 지적 해 주셔서 감사합니다. 전에 TCMPortManager를 시도했지만 그 프레임 워크는 iPhone 용이 아닌 MAC 용으로 제작되었습니다. 그래서 이것을 방금 버렸습니다. 이제 이것이 유일한 해결책이라면이 프레임 워크를 iPhone으로 변환하려고 노력할 것입니다. –

+0

예, iOS의 프레임 워크 제한 사항은 다소 실망 스럽습니다. 이것은 순전히 추측이지만 당신이 소스를 체크 아웃했다면 모든 필수적이지 않은 것들을 제거하고 TCMPortMapping 클래스를 당신의 앱에 추가 할 수 있다고 가정합니다. 거기에 당신이 아마 필요하지 않습니다 라우터 이름 해상도와 같은 물건의 부하가있어. –

+0

안녕 얘들 아, 난 정말 잘 작동하도록해야합니다. 이 TCMPortMapper 프레임 워크가 iOS에서 작동하도록 할 수 없습니다. 그걸로 진전을 이루셨습니까? –

관련 문제