혹시 pc온라인에서 클라이언트끼리 홀펀칭 해서 udp로 직접 쏴주는데
안드로이드에선 구현 불가능한가요?
제가 며칠째 클라끼리 udp 보내보고 별 짓 다해도 안되네요
게임서버(C로만든) 하고는 udp 통신이 간신히 가능하게 되었습니다
게임서버하고 된다면 게임서버에 담긴 아이피하고 열린 포트 번호를 다른 클라에게 알려주면
통신이 되야 되는거 아닌가요?
누구 어떻게 하라고 원리라도 좀 알려주세요 ㅠ.ㅠ
도저히 안되는건가요?

안드로이드 초보개발자입니다
잘 부탁드립니다
우선 저는 TCP통신을 햇엇는데 방법은 비슷할거라고 봅니다.
일반 소켓통신을 하는 방법으로 하시면 되는데 중요한것은 PDA는 IP가 계속 바뀐다는 것입니다. IP가 접속할떄마다 바뀔수도 잇기떄문에 중간 IP를 알수 잇는 중계서버가 잇어야 합니다. 클라끼리 통신을 할떄 중계서버에서 각자의 IP를 받아와서 그 IP를 가지고 통신을 해야합니다. WIFI가 연결되어있을경우에는 올려주는 IP가 틀릴수잇기떄문에 연결이 안될수도 있습니다 WIFI같은경우 내부IP를 쓰기떄문에 외부에서는 접근이 안되는 경우 입니다. 한마디로 지금 구현하신걸로 되시는거 같은데 IP가 안맞아서 안되시는거 같네요
상용 P2P 네트워크 라이브러리 프라우드넷의 경우를 말씀드릴께요.
양쪽 다 3G/LTE이면 폰끼리 직접 P2P는 대부분 실패합니다. 이때는 어쩔 수 없이 릴레이 서버가 두 폰 사이에서 데이터 주고받기를 도와줘야 합니다. 하지만 한쪽이라도 Wifi이면, 대부분 성공합니다.
자 그럼, 원리를 설명드릴께요.
서버에서 확보된 클라의 공인 주소 갖고 서로 통신이 되는 것은 full cone NAT 특징을 가진 인터넷 공유기에서만 가능합니다. symmetric NAT 방식으로 작동하는 기기 가령 통신사의 게이트웨이는, 상대방이 full cone NAT이어야지만 직접 P2P가 됩니다.
여담이지만, 안드로이드용 앱을 개발하신다면, 사용자가 wifi존을 들어가거나 나갈 때의 경우도 고려하셔야 합니다... 당연히 IP도 바뀌죠. 이때는 연결 핸드오버 기능을 만들어주어야 하는데... 이거 쉽지 않습니다. 삼성,LG폰이 이거 관련해서 작동도 다르게 하는 등 이슈가 많습니다. 다행히 프라우드넷은 이 문제도 자체 해결하고 있어, wifi존을 들어가거나 나가더라도 연결이 계속 유지됩니다.




제가 알기로는 3G로 접속한 경우 폰에서 포트를 열어 외부 접속을 받는 건 안됩니다.
통신사별로 다를 수는 있습니다.
제가 테스트해봤을 때는 안되더군요.