Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.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
Android广播接收器不工作:绑定失败,无法分配请求地址_Android_Python_Sockets_Udp_Broadcast - Fatal编程技术网

Android广播接收器不工作:绑定失败,无法分配请求地址

Android广播接收器不工作:绑定失败,无法分配请求地址,android,python,sockets,udp,broadcast,Android,Python,Sockets,Udp,Broadcast,作为一项任务,我正在尝试将android设备设置为从笔记本电脑上的python程序接收UDP广播 python发送方将每隔5秒通过广播发送一些数据,接收方将接收并显示数据。但是,android接收器无法接收数据。 我目前正在使用三星S3作为我的android设备进行测试 确定的一个主要错误是绑定失败,无法分配请求地址 下面是我在网上找到的修改过的代码 PYTHON发送器 ANDROID接收器代码 您是否在应用程序的清单文件中添加了android.permission.CHANGE\u WIFI\

作为一项任务,我正在尝试将android设备设置为从笔记本电脑上的python程序接收UDP广播

python发送方将每隔5秒通过广播发送一些数据,接收方将接收并显示数据。但是,android接收器无法接收数据。 我目前正在使用三星S3作为我的android设备进行测试

确定的一个主要错误是绑定失败,无法分配请求地址

下面是我在网上找到的修改过的代码

PYTHON发送器 ANDROID接收器代码
您是否在应用程序的清单文件中添加了android.permission.CHANGE\u WIFI\u MULTICAST\u状态?

标题有误导性。这不是广播接收器,您正在尝试使用数据报套接字接收数据。是的,我这样做了!它仍然有同样的问题你允许通过防火墙的端口吗?
# Send UDP broadcast packets

port = 50001

import sys, time
from socket import *

s = socket(AF_INET, SOCK_DGRAM)
s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)

while 1:

    data = repr(time.time()) + '\n'
    print data
    s.sendto(data, ('192.168.0.14', port))
    time.sleep(5)
class receiveUDP implements Runnable {
    final String[] text = new String[1];
    final int server_port = 50001;
    // create buffer
    final byte[] message = new byte[1500];
    final DatagramPacket p = new DatagramPacket(message, message.length);


    public void run() {
        DatagramSocket s = null;
        while (true) {
            try{
                WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
                WifiManager.MulticastLock lock = wifi.createMulticastLock("Main");
                lock.acquire();
                s = new DatagramSocket(server_port, InetAddress.getByName("192.168.0.14"));

                Log.d(MainActivity.class.getName(), "Created socket");
                s.receive(p);
                lock.release();
                text[0] = new String(message, 0, p.getLength());
                Log.d(MainActivity.class.getName(), "message:" + text[0]);
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //Toast.makeText(context, "Received message: "+text[0], Toast.LENGTH_SHORT).show();
                        textResponse.setText(text[0]);
                    }

                });
            } catch (SocketException e) {
                Log.e(MainActivity.class.getName(), "An unexpected error occurred", e);
            } catch (IOException e) {
                Log.e(MainActivity.class.getName(), "An unexpected error occurred", e);
            } catch (SecurityException e) {
                Log.e(MainActivity.class.getName(), "An unexpected error occurred", e);
            } finally {
                if (s != null) s.close();
                Log.d(MainActivity.class.getName(), "Closing socket");
            }
        }
    }
}