UDP パケットを送信するデータリンクに接続しようとしています。これらのパケットは「ブロードキャスト」されません。(UDP バケットを送信するには、ネットワーク上で任意のマシンが受信できるようにブロードキャストする方法と、特定の IP に送信する方法の 2 つがあることを理解しています...私の理解はこれに限られていますが、それらが送信されることは知っています特定の IP に)。
テストしている Android アプリでパケットを受信できません (Galaxy S3...マニフェストでインターネット許可が有効になっています)。ホスト マシン (IP) とそれに関連付けられたポートにバインドしています。パケット トラフィックは WireShark で見られます。
これが私のコードです。私が省略している明白なものはありますか?
try {
Log.d("UDP", "1");
DatagramSocket serverSocket = new DatagramSocket();
Log.d("UDP", "2");
InetAddress address = InetAddress.getByName(UDP_IP);
Log.d("UDP", "2a");
serverSocket.connect(address, UDP_SERVER_PORT);
Log.d("UDP", "2b");
serverSocket.setSoTimeout(5000); //5 sec wait for the client to connect
Log.d("UDP", "3");
byte[] data = new byte[1024];
Log.d("UDP", "4");
DatagramPacket packet = new DatagramPacket(data, data.length);
Log.d("UDP", "5");
Log.d("UDP", "S: Receiving...");
serverSocket.receive(packet);
//lock.release();
retVar = 1;
Log.d(" Received Packet", "Good");
}
catch (Exception e) {
Log.e("UDP", "S: Error", e);
}