套接字发送和接收字节数组

23 java sockets arrays

在服务器中,我通过Java套接字向客户端发送了一个字节数组

byte[] message = ... ;

DataOutputStream dout = new DataOutputStream(client.getOutputStream());
dout.write(message);
Run Code Online (Sandbox Code Playgroud)

如何从客户端接收此字节数组?

fra*_*rek 61

试试这个,它对我有用.

发件人:

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

dOut.writeInt(message.length); // write length of the message
dOut.write(message);           // write the message
Run Code Online (Sandbox Code Playgroud)


接收器:

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

int length = dIn.readInt();                    // read length of incoming message
if(length>0) {
    byte[] message = new byte[length];
    dIn.readFully(message, 0, message.length); // read the message
}
Run Code Online (Sandbox Code Playgroud)

  • dOut.writeInt(消息长度); 和 dOut.write(消息); 是赢家。谢谢@弗兰塔 (2认同)

Bom*_*mbe 8

首先,DataOutputStream除非确实有必要,否则不要使用.第二:

Socket socket = new Socket("host", port);
OutputStream socketOutputStream = socket.getOutputStream();
socketOutputStream.write(message);
Run Code Online (Sandbox Code Playgroud)

当然这没有任何错误检查,但这应该让你去.在JDK API的Javadoc是你的朋友,可以帮助你很多.

  • 为什么不使用DataOutputStream?是否增加了一些重要的开销? (5认同)
  • 我没有看到这回答如何在同一个套接字上发送**和接收**. (2认同)