如何确保我的服务器读取客户端编写的内容?
我正在从套接字客户端写一个字节数组:
byte[] arr = { 49, 49, 49, 49, 49};
InetAddress address = InetAddress.getByName(host);
connection = new Socket(address, port);
out = new ObjectOutputStream(connection.getOutputStream());
out.flush();
在接收端,在服务器上我有:
byte[] msgType = new byte[5];
in = new BufferedInputStream(connection.getInputStream());
int bytesRead = in.read(msgType, 0, 5);
System.out.println("msg rcvd: " + msgType.toString());
在输出中我得到奇怪的字符串:
server: waiting for connection
server: connection received from localhost
server: Connection Successful
bytes read: 5
msg rcvd: ��w
如何确保我从客户端发送的字节数相同?
没有找到相关结果
已邀请:
3 个回复
厢界山攀
,则必须在另一侧使用
。 在你的情况下,一个简单的OutputStream(可能是缓冲的)和
和
都可以。 但是对于打印,请不要使用
,如果您想要格式化输出,请使用
。 编辑:我只是看到你甚至没有在发送端写你的阵列。所以你实际上只是在阅读ObjectOutputStream标头。 来自评论: 我正在处理服务器端,我被告知我将发送一个字节数组。怎么样 接收并打印该字节数组?在这种情况下,字节数组是文本/字符串的字节 这听起来像服务器发送的东西就像在某些编码中编码的字符串,如ASCII,UTF-8或ISO-8859-1。如果是这样,在接收端你可以使用这样的东西:
当然,请确保编码与发送方实际使用的编码相同。 相应的发送代码可能是这样的:
室邢
不会打印字节数组的内容。 这是我找到的一个方法的链接,它将以更有意义的方式打印出字节数组。
皇小福另届
而是使用它:
请注意,您正在处理的字节具有正确的编码(我在这里假设为UTF-8)。既然你已经
了,你可以在服务器端使用它的
,在客户端使用
。