0
특정 포트에서 특정 IP 주소로 데이터를 보내려고합니다. 하드웨어 장치로부터 응답이 없습니다. 아래 코드는 내 코드입니다. 똑같은 일은 iOS에서 제대로 작동합니다. 그러나 androidd tt는 소켓 타임 아웃 예외를 던지고 있습니다.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++;
}
도와주세요. 명확하지 않은 의견이 있으시면 여기를 클릭하십시오.