サーバー モジュールおよびクライアント Nexus Galaxy ICS として使用される WiBro。どちらのマシンも 3g UDP 通信です。サーバーは、実装された受信データのみを返します。
dSocket.send (sendPacket) はスムーズな通信です。しかし、問題があります。dSocket.receive (recvPacket) はデータを受信しません。
サーバーが送信するパケットが間違っていますか? クライアントがパケットを受信した場合は間違っていますか? サーバーはデータを送信しますが、通信機器は状況を維持するために取られますか?
パケットを送信するだけの場合、クライアントは問題ありません。しかし、受信コードの実装後、クライアントには問題があります。
private class ClientThread implements Runnable{
@SuppressWarnings("finally")
@Override
public void run() {
// TODO Auto-generated method stub
DatagramSocket dSocket = null;
try{
InetAddress serverAddr = InetAddress.getByName(serverIpAddress.toString());
Log.d(TAG, "Connecting");
Log.d(TAG, "IP :::: " + serverAddr.toString());
dSocket = new DatagramSocket(SERVERPORT);
dSocket.setSoTimeout(5000);
byte[] arr_RecvPacket = new byte[1024];
connected = true;
while(connected){
try{
Log.d(TAG, "Sending Command :::: ( " + String.valueOf(i));
String strPacket = "Hey Server ( " + String.valueOf(i);
byte[] arr_Packet = strPacket.getBytes();
sendPacket = new DatagramPacket(arr_Packet, arr_Packet.length, serverAddr, SERVERPORT);
dSocket.send(sendPacket);
Log.d(TAG, "C:Send");
i++;
Log.d(TAG, "C:Make Recv Packet....");
recvPacket = new DatagramPacket(arr_RecvPacket, arr_RecvPacket.length);
Log.d(TAG, "C:Recving...");
dSocket.receive(recvPacket);
handler.sendEmptyMessage(0x01);
Thread.sleep(4000);
}catch(Exception e){
e.printStackTrace();
Log.d(TAG, "S:Error");
}
}
Log.d(TAG, "S:DataSocket close");
dSocket.close();
}catch(Exception e){
Log.d(TAG, "C:Error");
e.printStackTrace();
connected = false;
}finally{
connected = false;
if(dSocket != null){
dSocket.close();
}
return;
}
}
}