我正在寻找一种获取数组的方法,每个组件的值都可以在0到255之间。
我正在使用Android Studio,并且从套接字接收了数据。以下是我的代码。

try {
            InetAddress IpAddress = InetAddress.getByName(remoteName);
            myUpd_socket = new DatagramSocket(remotePort);
            // Send connect message
            String str = "connect request";
            send_data = str.getBytes();
            DatagramPacket send_packet = new DatagramPacket(send_data,str.length(), IpAddress, remotePort);
            myUpd_socket.send(send_packet);
            byte[] dataArray = new byte[1024];
            DatagramPacket udp_packet = new DatagramPacket(dataArray,dataArray.length);

            while (true) {
                myUpd_socket.receive(udp_packet);
                byte[] buff = new byte[udp_packet.getLength()];
                System.arraycopy(dataArray,0,buff,0,buff.length);
            }

        } catch (SocketException e) {
            e.printStackTrace();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

我需要从发射器获得相同的数据。原始数据中没有负值。但是当我检查接收到的数据时,buff有很多负值。我在这里弄错了。
我是Java和android的新手。因此,如果有人可以帮助我,我真的很感激。
谢。

最佳答案

为什么不使用:

接收

Socket socket = ...
DataInputStream in = new DataInputStream(socket.getInputStream());

int length = in.readInt();                    // read length of incoming message
if(length>0) {
    byte[] message = new byte[length];
    in.readFully(message, 0, message.length); // read the message
}

SEND
byte[] message = ...
Socket socket = ...
DataOutputStream out = new DataOutputStream(socket.getOutputStream());

out.writeInt(message.length); // write length of the message
out.write(message);           // write the message

09-25 19:44