1
필자는 안드로이드 장치에서 간단한 udp 서버를 구현합니다. (sdk 1.5) 전화에서 로컬 클라이언트를 실행하면 내 서버로 트리거가 전송됩니다.UDP 서버가 외부에서 전화를받지 못합니다.
하지만 외부 서버에서 전화로 udp 통화를 시도하면 작동하지 않습니다. 이미 외부 서버가 방화벽에 의해 차단되지 않았으며 내 전화가 수신중인 올바른 포트로 UDP 트리거를 보내고 있음을 확인하십시오.
나는 전화로 natstat를 사용했고, 전화가 실제로 로컬 IP와 포트를 듣고 있는지 확인했다. 내가 그것을 잘 작동 UDP 트리거를 전송 로컬 클라이언트 (별도 스레드)와 그것을 시도하지만, 때 때 (장치에서) 내가 말했듯이 너무
// server will listen to one client
try
{
Thread udpServerThread = new Thread()
{
@Override
public void run()
{
try
{
// Retrieve the ServerName
InetAddress serverAddr = InetAddress
.getByName("localhost");
Log.d("UDP", "S: Connecting...");
// Create new UDP-Socket
socket = new DatagramSocket(SERVERPORT,serverAddr);
byte[] buf = new byte[17];
// * Prepare a UDP-Packet that can contain the data we
// * want to receive
DatagramPacket packet = new DatagramPacket(buf,
buf.length);
Log.d("UDP", "S: Receiving...");
// wait to Receive the UDP-Packet
socket.receive(packet);
Log.d("UDP", "S: Received: '"
+ new String(packet.getData()) + "'");
acceptedMsg=new String(packet.getData());
notifyService(acceptedMsg);
Log.d("UDP", "S: Done.");
} catch (Exception e)
{
Log.e("UDP", "S: Error", e);
}
}
};
udpServerThread.start();
}
catch (Exception E)
{
Log.e("r",E.getMessage()) ;
}
, 여기
서버의 내 코드입니다 나는이 클라이언트 구현을 취하여 UDP가 전송 된 후 외부 실제 서버 에 넣었습니다. 전화가 응답하지 않습니다.어떤 아이디어가 있습니까?
덕분에,
선.
감사 :
는 당신이 실제로하고 싶은 당신은 분명히 그래서처럼
DatagramSocket
을 작성하여 달성 할 수 INADDR_ANY에 바인드 된 소켓을 가지고하는 것입니다! 그것은 효과가 있었지만 여전히 INADDR_ANY가 의미하는 바를 이해하지 못합니까? – raymanINADDR_ANY는 IPv4 와일드 카드 주소이며 소켓을 INADDR_ANY에 바인딩하면 시스템의 모든 주소에 바인딩하는 것과 같습니다. – Hasturkun