Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-无法发送数据包_Java_Android_Multithreading_Udp - Fatal编程技术网

Java Android-无法发送数据包

Java Android-无法发送数据包,java,android,multithreading,udp,Java,Android,Multithreading,Udp,我正在构建一个程序,可以在两台android设备之间发送/接收数据。 首先,我创建了一个客户端线程来发送数据 public void run() { try { //Create the datagram packet byte[] buffer = message.getBytes(); InetAddress addr = InetAddress.getByName(address); DatagramPacke

我正在构建一个程序,可以在两台android设备之间发送/接收数据。 首先,我创建了一个客户端线程来发送数据

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");
    }
在服务器线程,我想接收这个数据包,所以我打开了一个datagramsocket来接收这个数据包

 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) {}
        }
}       
当我想发送消息时,我得到一些警告,因此程序无法运行ClientThread

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" />  


那么,问题出在哪里???我怎样才能修复它呢?

您正在发送到端口5555,但您正在接收端口5556

您最好在整个过程中保持服务器的DatagramSocket处于打开状态