c ++和java之间的通信

我必须编写一个JAVA程序,它与C ++中的其他程序进行通信。 要发送的消息是简单的String / Char [],如“REQ”,“PAUSE”,“02,14”,末尾带有’\ 0’,所以:“REQ \ 0”。 我有这个:

socket = new Socket(); socket.connect(new InetSocketAddress(komputer, port), czekaj); in = new DataInputStream(socket.getInputStream()); out = new DataOutputStream(socket.getOutputStream()); 

发送:

 public void sendTekst(String tekst){ try{ char []a = tekst.toCharArray(); for(int i = 0; i < a.length; i++) out.writeChar(a[i]); out.writeChar((byte)'\0'); out.flush(); } catch(IOException e) { JOptionPane.showMessageDialog(ramka, "Blad wysylu: " + e.getMessage()); } } 

读:

 String s = null; char aa; while((aa = in.readChar()) != '\0'){ if(s == null) s = String.valueOf(aa); else s += String.valueOf(aa); } 

问题:我向C ++程序发送“REQ”(在有效端口上的localhost上工作)。 它只收到垃圾。 我尝试在同一个程序(Java通信Java)上完成它并且它有效。 我需要做什么?

我无法编辑C ++程序。

编辑:我已经改变了输入和输出流,但仍然存在问题:

 in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8")); out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF-8")); 

发送:

 public void sendTekst(String tekst){ tekst += '\0'; char []a = tekst.toCharArray(); out.print(a); out.flush(); } 

读:

 String s = null; char[] aa = new char[20]; in.read(aa, 0, 10); s = charToString(aa); 

我的方法charToString:

 public static String charToString(char[] buff){ String str = String.valueOf(buff[0]); for(int i = 0; buff[i] != '\0' || i < buff.length ; i++) str += String.valueOf(buff[i]); return str; } 

针对JAVA进行了测试。 我收到了垃圾。