您使用UDP连接和socket.receive(数据包)不等待数据包。如果缓冲区中没有数据包,则此操作会抛出异常。 尝试将您的代码更改为:
@Override public void run() { while (always==true) { while(start2==false) { } try { InetAddress serverAddr = InetAddress.getByName("192.168.173.133"); updatetrack("\nServer: Start connecting\n"); //*DatagramSocket socket = new DatagramSocket(SERVERPORT2, serverAddr);/ DatagramSocket socket = new DatagramSocket(SERVERPORT2); while (always==true) { try{ byte[] buf = new byte[17]; DatagramPacket packet = new DatagramPacket(buf, buf.length, serverAddr, SERVERPORT2); //*DatagramPacket packet = new DatagramPacket(buf, buf.length);/ updatetrack("Server: Receiving\n"); socket.receive(packet); updatetrack("Server: Message received: '" + new String(packet.getData()) + "'\n"); updatetrack("Server: Succeed!\n"); start2=false; } catch(Exception ex) {ex.printStackTrace();} } } catch (Exception e) { updatetrack("Server: Error!\n"); start2=false; } } }