Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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_Sockets_Serversocket - Fatal编程技术网

Android非阻塞从套接字读取

Android非阻塞从套接字读取,android,sockets,serversocket,Android,Sockets,Serversocket,我需要一些帮助来实现在我的应用程序中从套接字读取数据 我正在开发一个应用程序,它使用套接字监听数据并解析接收到的数据。问题是我需要连接到我的设备并启动套接字,以便接收数据。我使用的是ServerSocket,它阻塞并等待停止另一个套接字,该套接字向我发送数据,然后解析数据。但是我需要能够在关闭服务器的套接字之前读取流 那么,您知道我如何实现这种实现以及我必须使用哪些类吗?以下代码是我用来收听网络广播消息的代码: void startBroadcastListener(final int rece

我需要一些帮助来实现在我的应用程序中从套接字读取数据

我正在开发一个应用程序,它使用套接字监听数据并解析接收到的数据。问题是我需要连接到我的设备并启动套接字,以便接收数据。我使用的是
ServerSocket
,它阻塞并等待停止另一个套接字,该套接字向我发送数据,然后解析数据。但是我需要能够在关闭服务器的套接字之前读取流


那么,您知道我如何实现这种实现以及我必须使用哪些类吗?

以下代码是我用来收听网络广播消息的代码:

void startBroadcastListener(final int receivingPort)
{
    new Thread() 
    {
        public void run() 
        {
            try 
            {
                int port = receivingPort;
                dsocket = new DatagramSocket(port);
                byte[] buffer = new byte[2048];

                DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
                while (true) 
                {
                    //System.out.println("Receiving...");
                    dsocket.receive(packet);
                    String msg = new String(buffer, 0, packet.getLength());
                    packet.setLength(buffer.length);


                    String binaryString = convertHexToBinary(packet.getData()).replaceAll("\\s","");

                    //System.out.println(packet.getAddress().getHostName() + ": " + binaryString);
                }
            }
            catch (Exception e) 
            {
                e.printStackTrace();
            }
        }
    }.start();
}