0
特定のポートで特定のIPアドレスにデータを送信しようとしています。ハードウェアデバイスからの応答はありません。以下は私のコードです。同じことがiOSでうまく動作していますが、ソケットタイムアウト例外をスローするアンドロイドでは正常に動作しています。androidでUDPを使用して特定のIPとポートにデータを送受信する
DatagramSocket sendSoc = null;
DatagramPacket packet = null;
try {
sendSoc = new DatagramSocket(WIPHONEPORT);//2739
sendSoc.setBroadcast(true);
sendSoc.setSoTimeout(5000);
InetSocketAddress address = new InetSocketAddress(InetAddress.getByName(deviceSignature.getDeviceIP()), WIPHONEPORT);
byte[] ip = object.ToBuffer();
Log.d("data", ip.length + "##" + Arrays.toString(ip));
packet = new DatagramPacket(ip,
ip.length, address.getAddress(), address.getPort());
} catch (IOException e) {
Log.d("error","could not able to send packet");
return;
}
WiphoneProp prop;
boolean canLoop = true;
int i = 0;
////////////
while (canLoop) {
try {
sendSoc.send(packet);
try {
byte buf[] = new byte[1024];
DatagramPacket pack = new DatagramPacket(buf, buf.length);
sendSoc.receive(pack);
if (pack.getData() != null) {
if (!pack.getAddress().equals(getLocalIp())) {
prop = new WiphoneProp(pack.getData());
prop.validate();
canLoop=false;
Log.d("bytearray", Arrays.toString(pack.getData()));
Log.d("address ", pack.getAddress().getHostAddress() + " @@ " + pack.getAddress().getHostName() + " @@ " + pack.getAddress().getCanonicalHostName());
Log.d("result", prop.getWiphoneName());
}
}
} catch (UnknownHostException e) {
Log.d("UnknownHostException", "UnknownHostException");
}
} catch (IOException e) {
Log.d("SocException", "IOException");
}
i++;
}
私を助けてください。あなたがコメントを明確にしていない場合は、こちらをご覧ください。