如何通过TCP连接发送字节数组(java编程)
有人可以演示如何通过TCP连接将字节数组从发送程序发送到Java中的接收程序吗?
byte[] myByteArray
(我是Java编程的新手,似乎找不到如何做到这一点的例子来显示连接的两端(发送方和接收方)。如果您知道一个现有示例,也许您可以发布该链接。(无需重新发明轮子。附言:这不是家庭作业!:-)
有人可以演示如何通过TCP连接将字节数组从发送程序发送到Java中的接收程序吗?
byte[] myByteArray
(我是Java编程的新手,似乎找不到如何做到这一点的例子来显示连接的两端(发送方和接收方)。如果您知道一个现有示例,也许您可以发布该链接。(无需重新发明轮子。附言:这不是家庭作业!:-)
Java 中的 和 类以本机方式处理字节数组。您可能要添加的一件事是消息开头的长度,以便接收方知道预期的字节数。我通常喜欢提供一种方法,允许控制字节数组中要发送的字节,就像标准API一样。InputStream
OutputStream
像这样:
private Socket socket;
public void sendBytes(byte[] myByteArray) throws IOException {
sendBytes(myByteArray, 0, myByteArray.length);
}
public void sendBytes(byte[] myByteArray, int start, int len) throws IOException {
if (len < 0)
throw new IllegalArgumentException("Negative length not allowed");
if (start < 0 || start >= myByteArray.length)
throw new IndexOutOfBoundsException("Out of bounds: " + start);
// Other checks if needed.
// May be better to save the streams in the support class;
// just like the socket variable.
OutputStream out = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
dos.writeInt(len);
if (len > 0) {
dos.write(myByteArray, start, len);
}
}
编辑:要添加接收端:
public byte[] readBytes() throws IOException {
// Again, probably better to store these objects references in the support class
InputStream in = socket.getInputStream();
DataInputStream dis = new DataInputStream(in);
int len = dis.readInt();
byte[] data = new byte[len];
if (len > 0) {
dis.readFully(data);
}
return data;
}