2014-11-24 2 views
1

wifi 연결을 통해 내 안드로이드에서 외부 센서로 데이터를 보내려고합니다. 센서와 안드로이드 사이의 데이터를 UDP 연결로 성공으로 보낼 수는 있지만 그 반대는 할 수 없습니다. 위에서 볼 수 있듯이UDP를 통해 안드로이드에서 외부 센서로 데이터 전송

public void onClick(View v) { 
      Thread t = new Thread(){ 
       @Override 
       public void run(){ 
        while(true){ 
         int server_port = 12345; 
         byte[] message = "1".getBytes(); 
         System.out.println(message.toString()); 
         try { 
          InetAddress local = InetAddress.getByName("255.255.255.255"); 
          DatagramPacket p = new DatagramPacket(message,message.length,local,server_port); 
          DatagramSocket s = new DatagramSocket(); 

          s.send(p); 
          s.close(); 
         } catch (IOException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
        } 
       } 
      }; 
      t.start(); 
     } 

는, 버튼의 OnClick, 나는 UDP를 통해 데이터를 전송하는 응용 프로그램을 원하는 : 데이터가 전송되는 코드는 아래의 하나입니다. 문제는 내가 시도 할 때 다음과 같은 오류가 발생한다는 것입니다.

11-24 16:10:13.335: W/System.err(8077): java.net.SocketException: sendto failed: ENETUNREACH (Network is unreachable) 
11-24 16:10:13.335: W/System.err(8077): at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:506) 
11-24 16:10:13.335: W/System.err(8077):at libcore.io.IoBridge.sendto(IoBridge.java:475) 
11-24 16:10:13.335: W/System.err(8077):at java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:182) 
11-24 16:10:13.335: W/System.err(8077):  at java.net.DatagramSocket.send(DatagramSocket.java:284) 
11-24 16:10:13.343: W/System.err(8077):  at com.example.waspmoteagriculture.MainActivity$3$1.run(MainActivity.java:97) 
11-24 16:10:13.343: W/System.err(8077): Caused by: libcore.io.ErrnoException: sendto failed: ENETUNREACH (Network is unreachable) 
11-24 16:10:13.343: W/System.err(8077):  at libcore.io.Posix.sendtoBytes(Native Method) 
11-24 16:10:13.343: W/System.err(8077):  at libcore.io.Posix.sendto(Posix.java:151) 
11-24 16:10:13.343: W/System.err(8077):  at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177) 
11-24 16:10:13.343: W/System.err(8077):  at libcore.io.IoBridge.sendto(IoBridge.java:473) 
11-24 16:10:13.343: W/System.err(8077):  ... 3 more 

이미 네트워크 권한이 포함되어 있습니다. 또한 모바일에 정보를 보내기 위해 센서가 안드로이드의 무선 랜 핫스팟에 연결되어 있음을 언급해야합니다. 그렇게 데이터를받는 데 문제가 있는지 나는 모른다.

코드에 문제가 있습니까? 아니면이 오류가 다른 것과 관련이 있습니까? 미리 감사드립니다.

답변

0

나는 어떤 식 으로든 문제를 해결했습니다. 브로드 캐스트 주소 255.255.255.255가 유효하지 않아 현재 연결된 네트워크를 찾을 수없는 것으로 보입니다 (네트워크에 연결할 수없는 문제에 대해 설명 함). 그것이 데이터의 전송을 위해서 나는 센서의 IP 주소를 사용했다. (수신 된 패키지를 통해 이것을 System.out.println(packet.getAddress().toString());으로 찾았다.) 그래서 데이터 방송을 보내려면 방송 주소 현재 사용중인 네트워크의 주소가 사용되어야합니다.

-1

아마도 네트워크에 액세스 할 수있는 권한을 설정해야합니다. AndroidManifest.xml에 다음 줄을 추가하십시오.

<uses-permission android:name="android.permission.INTERNET"/> 

그래도 작동하지 않으면 코드에 약간의 변경이 필요합니다. 자세히 알아보기 : https://code.google.com/p/boxeeremote/wiki/AndroidUDP

+0

네트워크에 대한 액세스 권한이 이미 포함되어 있습니다. 링크에서 코드를 사용한 후에도 여전히 동일한 오류가 발생합니다. 센서의 기능에 문제가있을 수 있습니까 (예 : 클라이언트)가 패킷을 받거나 연결이 올바르게 설정 되었다면 –

+0

센서가 안드로이드의 wifi 핫스팟에 연결되어 있음을 언급해야합니다. –

관련 문제