c ++和java之间的通信

时间:2016-05-03 13:28:26

标签: java c++ sockets communication

我必须编写一个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);                
}

问题:我将“REQ”发送到C ++程序(在有效端口上的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测试了这个 。我收到了垃圾。

0 个答案:

没有答案