套接字连接-Java添加字节

套接字连接-Java添加字节,java,android,node.js,sockets,Java,Android,Node.js,Sockets,我想通过套接字将一个字符串从Android设备发送到node.js服务器。连接已经可以工作了,但是每当我发送字符串时,服务器就会收到额外的字符 这是我将字符串“hans”发送到node.js服务器时收到的内容: Buffer ac ed Buffer 00 05 77 04 68 61 6e 73 作为utf8字符串: ?? ♣w♦hans 以下是发送字符串的Java部分: 那么为什么会发生这种情况呢?您使用的是用于发送序列化对象的,必须由另一端的ObjectInputStream解码。如

我想通过套接字将一个字符串从Android设备发送到node.js服务器。连接已经可以工作了,但是每当我发送字符串时,服务器就会收到额外的字符

这是我将字符串“hans”发送到node.js服务器时收到的内容:

Buffer ac ed
Buffer 00 05 77 04 68 61 6e 73
作为utf8字符串:

??
♣w♦hans
以下是发送字符串的Java部分:


那么为什么会发生这种情况呢?

您使用的是用于发送序列化对象的,必须由另一端的
ObjectInputStream
解码。如果您只是在另一端发送字节和读取字节,那么您应该只使用
OutputStream
InputStream

接收代码是什么样子的?您希望接收者如何知道字符串的长度?只使用
OutputStream
而不是
ObjectOutputStream
。最好是
编写器,而不是原始的输出/输入流。您仍然需要以某种方式对数据进行编码。否则,接收者将无法知道事情的开始和结束。基本上,OP只是编写了发送和接收数据的代码,而没有首先设计一个协议来精确指定要发送的内容、时间和方式。
ObjectOutputStream
不是用于发送原始数据类型,而是用于Java中的任何可序列化数据类型。我猜您在提到原语时考虑的是
DataOutputStream
。谢谢大家,这样做了!
clientSocket = new Socket("xxx.xxx.xxx.xxx",9988);
ObjectOutputStream clientOut = new ObjectOutputStream(clientSocket.getOutputStream());              

String sendString = "hans";             
clientOut.write(sendString.getBytes());
clientOut.flush();