从套接字获取数组

时间:2016-01-12 06:27:49

标签: java android sockets android-studio

我找到了获取数组的方法,每个组件的值可以在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的新手。所以,如果有人能帮助我,我真的很感激。 感谢。

2 个答案:

答案 0 :(得分:0)

为什么不使用:

<强> RECEIVE

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
}

发送

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

答案 1 :(得分:0)

byte是用Java签名的。如果您想要无符号值(作为int),请使用:byteValue & 0xFF