2014-03-31 2 views
0

두 개의 안드로이드 장치간에 데이터를주고받는 프로그램을 만들고 있습니다. 먼저 내가이 패킷을 수신 할 서버 스레드에서 데이터안드로이드 - DatagramPacket을 보낼 수 없습니다

public void run() { 
    try { 

     //Create the datagram packet 
     byte[] buffer = message.getBytes(); 
     InetAddress addr = InetAddress.getByName(address); 
     DatagramPacket packet = new DatagramPacket(buffer, buffer.length, addr, 5555); 


     //Create Datagram Socket 

     DatagramSocket socket = new DatagramSocket(); 
     socket.setBroadcast(broadcast); 

     // send the packet 
     socket.send(packet); // i think that the problem was here 



    } catch (Exception e) { 
     e.printStackTrace(); 
     Log.i("CTHREAD", "erreur"); 
    } 

를 보내 클라이언트 스레드를 생성, 그래서 10 패킷을 수신하기 위해 DatagramSocket를 열었다. 내가 메시지를 보낼 때 프로그램이 ClientThread을 실행할 수 있도록

public void run() { 
      try { 

        serverIP = getLocalIpAddress(); 
        Log.v("addr", serverIP);   
        serverSocket = new ServerSocket(5001); 
        Log.v("socket", "created"); 


        while(socketOk) { //boucle infini     
         Socket client = serverSocket.accept(); 
         // Log.v("client", "received"); 
         try { 

          DatagramSocket socket = new DatagramSocket(5556); 
          byte[] buf = new byte[1024]; //buffer 
          DatagramPacket packet = new DatagramPacket(buf, buf.length); 
          socket.receive(packet); 
          byte[] result = new byte[packet.getLength()]; 
          System.arraycopy(packet.getData(), 0, result, 0, packet.getLength()); 
          String msg = new String(result); 
          updateGui(msg, packet.getAddress()); 


         } catch (Exception e) { 
          socketOk =false; 
          Log.v("ServerThread", "SocketOk =false"); 

         } 
        } 
        } 
       catch (Exception e) {} 
     } 
}  

, 내가 어떤 경고를 얻을 수 있습니다.

at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:506) 
at libcore.io.IoBridge.sendto(IoBridge.java:475) 
at java.net.DatagramSocket.send(DatagramSocket.java:284) 
Caused by: libcore.io.ErrnoException: sendto failed: EACCES (Permission denied) 

Manifest.xml :

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> 
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> 
<uses-permission android:name="android.permission.INTERNET" /> 

그럼, 얼마나 문제가 ??? 어떻게 해결할 수 있니?

답변

0

당신은 포트 5555에 보내는 그러나 당신은 당신은 프로세스의 수명 오픈 서버의 DatagramSocket로 유지 나을 것 포트 5556.

에 받고 있습니다.

관련 문제