2016-10-27 9 views
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++; 
      } 

私を助けてください。あなたがコメントを明確にしていない場合は、こちらをご覧ください。

答えて

0

すべてのリクエストで同じDatagramSocketオブジェクトを使用してこの問題を修正しました。

関連する問題