[英]JAVA: I can't read text from sockets, send by C++ program
情况:我有 JAVA 程序和 C++ 程序(只有 exe;我无法访问内部)。 他们正在发送和接收文本,例如
"REQ", "00", "1,3", "15,4", "PAUSE"
。 通信是这样的(发送):
J: REQ
C: 00
J: NEW
C: 10
J: RDY
C: 2,13
J: 20
C: RDY
J: 1,1
(...)
首先RDY
做了一个重复的命令: RDY
number,number
20
RDY
(...)。
数字:0 - 15。
接收:
char[] bb = new char[10];
int znaki = in.read(bb);
bb[7] = '\n';
String s = new String(bb, 0, 7);
问题:我读到的数字如下:
Send: 2,13
Received: 2,
Send: 3,15
Received 3,1
Send: 13,2
Received: 13,
但有时我有 IOExeption:“输入长度 = 1”
有什么解决方案,可以正确阅读吗?
您的问题是,在 C/C++ 中,一个char
是一个字节,而 Java char
是 2 个字节。 尝试先读入一个byte
数组(适当长度),然后创建一个相同长度的 char 数组,并通过将其转换为char
来复制每个字节。 我相信你也可以用流编码做一些魔术,但对于你的简单例子,这应该可以!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.