Java和C++;-一串 我有java客户端和C++服务器。所有值都作为字节数组发送。数值接收良好,但在C++中存储在char数组中的字符串值在值的末尾有特殊字符,如新页或新行提要。有人能为这个问题提出解决方案吗?

Java和C++;-一串 我有java客户端和C++服务器。所有值都作为字节数组发送。数值接收良好,但在C++中存储在char数组中的字符串值在值的末尾有特殊字符,如新页或新行提要。有人能为这个问题提出解决方案吗?,java,c++,Java,C++,您是如何序列化/反序列化的?您应该决定编码(例如ASCII),然后首先将字符串的长度写为int,这样服务器就可以读取int并知道要读取字符串的字节数 一旦读取了字节,它只需要在char*后面加一个“\0”来终止数组中的字符串 根据您在Java中编写字符串时使用的内容,您可以执行以下操作: writeInt(string.length()); writeBytes(string.getBytes("ASCII")); 和在C++服务器中,你会做相反的操作。是-用于序列化/反序列化。它是一个开源、

您是如何序列化/反序列化的?您应该决定编码(例如ASCII),然后首先将字符串的长度写为int,这样服务器就可以读取int并知道要读取字符串的字节数

一旦读取了字节,它只需要在char*后面加一个“\0”来终止数组中的字符串

根据您在Java中编写字符串时使用的内容,您可以执行以下操作:

writeInt(string.length());
writeBytes(string.getBytes("ASCII"));

和在C++服务器中,你会做相反的操作。

是-用于序列化/反序列化。它是一个开源、稳定、易于使用的跨平台软件包。

1)确保服务器代码在字节级别符合您的协议

2) 确保客户端代码在字节级别符合您的协议

3) 如果您已经完成了1和2,但仍然存在问题,那么您的协议将被破坏。很可能,它无法正确指定服务器如何指定字符串的结束位置,以及客户端如何确定字符串的结束位置