通过socket将一个字符串从c ++发送到java

时间:2014-02-06 09:35:17

标签: java c++ sockets utf-8

我在c ++端有一段代码可以传递这样的字符串:

char someName[100]="Some String here";
    send(sock,someName,sizeof(someName),0);

另一方面,我有一个java代码,正在查找这样的字符串消息:

DataInputStream dIn= new DataInputStream(SOCK.getInputStream());
String filename=dIn.readUTF(); //Looks for "Some String here"

代码不会继续并提供UTFDataFormatException。所以我基本上都在寻找c ++ someName到UTF-8格式的转换,所以两端都会很开心!

谢谢!

修改 我尝试在java代码上使用BufferedReader,得到类似的东西:

  

‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO 〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡ AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜‡AO〜

2 个答案:

答案 0 :(得分:0)

DataInputBuffer.ReadUTF()读入以modified utf-8编码的字符串,这使得它不适合读取未使用DataOutputBuffer.WriteUTF()编码的数据。

此外,您的C ++程序发送一个填充零的固定长度字符串。当接收器不期望这种情况时,这也会引起问题。

C ++ 11还支持UTF-8字符串文字,请参阅here

答案 1 :(得分:-6)

将数据写入C / C ++应用程序的文本文件,并从Java应用程序中读取该文本文件。