안드로이드 개발 질문/답변
(글 수 45,052)
udp 서버(안드로이드) <ㅡ> 클라이언트(pc) 를 아래와 같이 구성하려고 합니다.
socket socket
| |
bind connect
| |
receive send
-----------------------------------------------------------------------------------
문제는 클라이언트 pc에서 안드로이드 서버로 메시지 전송이 잘 되지 않습니다.
혹시나 하는 마음에 안드로이드 서버에
클라이언트를 작성하여 쓰레드로 1초후 접속을 하도록 테스트를 해보았습니다.
그 결과, 메시지를 보내는데 성공했습니다.
그렇다면 외부에서의 메시지 전송이 왜 실패하는 걸까요??
먼저 안드로이드 서버에 함께 올려 테스트해본 java client source는
byte[] buf = ("hi").getBytes();
InetAddress svrAddr = InetAddress.getByName("xxx.xxx.xx.xx");
DatagramSocket socket = new DatagramSocket();
DatagramPacket packet = new DatagramPacket(buf, buf.length, svrAddr, 9000);
socket.send(packet);
외부 접속을 테스트 한 C client source 는
socket(AF_INET, SOCK_DGRAM, 0); connect(fd, (struct sockaddr *) &svrAddr, sizeof(svrAddr)); send(fd, (const char*)data, len, 0);
server(안드로이드)는 아래와 같이 jni로 작성하였습니다.
socket(AF_INET, SOCK_DGRAM, 0); bind(fd, (struct sockaddr *) &servAddr, sizeof (servAddr)); recvfrom(fd, rcv_data, rcv_num, 0, (struct sockaddr *) &cliAddr, &cliLen);
물론 자바 또한 외부에서 접속을 시도 했으나 실패하였습니다.
무엇이 문제일까요....
작업환경 : 갤럭시탭 froyo2.2.1




안드로이드에서 PC로 보내는건 되는데 PC에서 안드로이드로 보내는게 실패했다는 건가요?
받은 소캣으로 다시 보내면 되던데...