2012-05-14 2 views
0

현재 TCP를 통해 통신하려면 두 개의 장치가 필요한 안드로이드 응용 프로그램을 개발 중입니다. (자동으로 패킷이 풀려서 UDP가 출력되지 않습니다). 통신이 가능한 한 빨리 이루어져야합니다 (즉 수용 가능한 대기 시간 임계 값이 낮음). 연결은 짧게 유지됩니다 (2 분 미만 임). 전화가 연결되고, 일을하고, 연결을 종료합니다.서버 기반 TCP 프록시를 통한 Android 장치 대 장치 통신

나는 NAT 구멍 펀칭에 관한 많은 연구를 해왔지만 신뢰할 수있는 TCP 구멍 펀칭 방법이 자바와 안드로이드를 위해 구현 된 것 같지 않습니다. 따라서, 내 유일한 옵션은 "프록시"두 장치 사이의 TCP 통신을 서버 응용 프로그램을 개발하는 것 같다.

나는 한 두 가지 질문 :

1) 나는 바퀴를 다시 발명하지 않으 : 이미 내가 사용할 수 있습니다 작성된 간단한 TCP 프록시가 있습니까? (참고 : 모든 종류의 HTTP 프록시가 아닙니다. 낮은 대기 시간이 필요하기 때문에 장치의 두 TCP 소켓 연결 사이에 매우 작은 페이로드를 전달하려고합니다.) 서버의 유일한 목적은 NAT 문제를 피하는 것입니다.

2) 그렇지 않은 경우 누구에게나 이런 종류의 경험이 있으며 무엇을 권하고 싶습니까? Java NIO의 아이디어 또는 각 연결에 대한 새로운 스레드를 생성하는 서버 (문제는 적절한 "클라이언트"스레드를 연결하여 정보를 앞뒤로 전달하는 방법)를 가지고 놀았습니다. 아니면 Java가 서버 측에 사용할 최상의 언어일까요?

나는 Google의 채팅 서비스 (here 참조)를 통해 XMPP를 사용하는 것에 대한 권장 사항을 읽었지만 XMPP의 오버 헤드는 원하지 않습니다.

어떤 방향이나 제안이라도 대단히 감사하겠습니다. 귀하의 질문에 직접 답변으로

답변

0

은 :

1) 좋은 나는 정말 서버에서 사용할 수에 따라 달라집니다, 발견되지 않음. 필자는 PHP로 작성한 적이 있으며 매우 빠르고 간단하며 대부분의 서버에서 작동합니다. 나는 가이드 http://devzone.zend.com/209/writing-socket-servers-in-php/

으로 이것을 사용 당신은 우리가 생각 컴파일 된 C++ 바이너리 당신이 여기에서 볼 수 있었다, 그것이 대안 실행할 수있는 경우 : http://tcpproxy.codeplex.com/

2) PHP 옵션 1로 답을 을, 나는 '돈 자바에서 처음부터 글을 쓰는 경험이있다.

NAT traversal에 대한 제 ... 나는 작업중인 프로젝트에서 동일한 NAT 문제를 조사해 왔으며 NDK가 필요한 두 가지 옵션을 찾았지만 Android에서 NAT 통과를 위해 잘 작동 할 수있었습니다. pjnath (GPL)

www.pjsip.org/pjnath/docs/html

code.google.com/p/csipsimple/source/browse/trunk/pjsip_android/?r=201

libnice (LGPL) :

nice.freedesktop.org/wiki/

+0

는 응답 주셔서 감사합니다. NDK를 사용하여 다양한 NAT traversal 라이브러리에 액세스하는 것을 고려하지 않았습니다. 테스트를 위해 Java에서 함께 던졌지만 장기적인 솔루션을 찾고있었습니다. 나는 PHP를 살펴볼 것이다. – SjB