将字节从C ++传输到Java时,数据会被破坏

时间:2014-04-09 20:58:41

标签: java c++ sockets boost-asio

我的C ++服务器使用以下代码向我的Java客户端发送数字11

boost::system::error_code ignored_error;
tcp::socket* server_socket;
...
size_t check = boost::asio::write(*server_socket, boost::asio::buffer("11", 2), ignored_error);

check等于2,因此服务器端没有问题。

我的Java客户端使用以下代码

接收数据
Socket tcpSocket;
BufferedInputStream inFromServer;
...
String temp = "";
for(int i=0; i<2; i++)
    temp += (char) inFromServer.read();
int num_of_filters = Integer.parseInt(temp); //Here the following error is thrown

java.lang.NumberFormatException: For input string: "0

我做错了什么?任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:2)

我不确定,但我会从调查两端的编码开始。 然后收到字节并使用new String(byte[] bytes, Charset charset)

答案 1 :(得分:0)

您可能最好使用其中一个公共库来读取它,而不是自己逐个字节地进行读取。例如,使用apache commons IO你可以:

    String temp = IOUtils.toString(inFromServer);