在服务器端,我通过Java套接字向客户端发送了一个字节数组
byte[] message = ... ;
DataOutputStream dout = new DataOutputStream(client.getOutputStream());
dout.write(message);
如何从客户端接收此字节数组?
发布于 2009-07-24 07:09:43
首先,除非确实必要,否则不要使用DataOutputStream
。第二:
Socket socket = new Socket("host", port);
OutputStream socketOutputStream = socket.getOutputStream();
socketOutputStream.write(message);
当然,这缺少任何错误检查,但这应该可以让您继续工作。JDK API Javadoc是您的朋友,可以为您提供很多帮助。
发布于 2009-07-24 10:15:54
有一个JDK套接字教程here,它涵盖了服务器端和客户端。这看起来就是你想要的。
(来自该教程)设置为从回显服务器读取:
echoSocket = new Socket("taranis", 7);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
通过阅读器获取字节流并转换为字符串,并使用默认编码(通常不建议)。
上面省略了错误处理和关闭套接字/流,但请查看教程。
发布于 2012-12-24 15:00:14
您需要使邮件具有固定的大小,或者需要发送该大小,或者需要使用一些分隔符。
对于已知大小(100字节),这是最简单的情况:
in = new DataInputStream(server.getInputStream());
byte[] message = new byte[100]; // the well known size
in.readFully(message);
在这种情况下,因为DataInputStream
提供了readFully()
,所以它是有意义的。如果您不使用它,您需要自己循环,直到读取了预期的字节数。
https://stackoverflow.com/questions/1176135
复制相似问题