无法从Java套接字服务器接收数据到C套接字客户端

拉那

我的Socket客户端使用C语言编写,并以以下格式发送值:

x00\x2C\x02\x00\xE0\x00

现在,我想从用Java编写的TCP / IP套接字服务器中读取十六进制值。

在Java Socket中读取流值的方法应该是什么?

我正在尝试通过以下方式进行阅读,但无法正常工作:

InputStream ins = sock.getInputStream();
int byteRead;

while((byteRead = ins.read()) != -1) {
  System.out.println(Integer.toHexString(byteRead & 0xFF));
}
乔普·艾根(Joop Eggen)

首先说明显而易见的是,“ \ x41”是一个十六进制41(又称ASCII'A')的字节。C字符串也有一个终止符\x00所以你在写

\x00\x2C\x02\x00\xE0\x00

作为大小为6的char数组。将其写入字符串将写入一个空字符串,因为第一个字节为\x00

在Java方面,没问题\x00,只是一个普通的字节/字符。

Java代码还可以。一个变化可能是:

try (InputStream ins = new BufferedInputStream(sock.getInputStream())) {
    int byteRead;
    while ((byteRead = ins.read()) != -1) {
        System.out.printf("%02X%n", byteRead & 0xFF);
    }
} // Closes

此处的大写X导致大写的十六进制和%na换行符。String.format将是替代方案。

我的第一个猜测是C编写错误地puts使用strlen使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

php(客户端套接字)java(服务器套接字)无法接收第二个数据

将输入从C套接字客户端读取到Java套接字服务器

C posix套接字,无法从客户端向服务器发送数据

Java TCP 客户端/服务器套接字

套接字Java客户端-Python服务器

Java套接字。服务器-客户端通信

Java客户端/服务器套接字问题

套接字io无法同时接收客户端和服务器的事件

套接字服务器无法接收客户端发送的消息

Python套接字服务器-继续接收客户端数据

Java套接字:检查客户端是否能够从服务器接收消息

Java多线程套接字客户端/服务器:发送和接收Enummap对象

C ++ IP服务器套接字始终从PHP套接字客户端接收“ 0100000001000000”

设置客户端套接字和服务器套接字侦听器 (Java)

C#获取UDP服务器套接字从其接收数据的客户端的IP地址

如何使客户端套接字等待来自服务器套接字的数据

Python 2.7.8:套接字-TCP套接字中的客户端服务器数据丢失

C#中的异步套接字服务器,通过套接字服务器进行客户端到客户端的通信

即使关闭了输出流,C ++套接字客户端仍会从Java服务器接收消息

PHP客户端套接字与C#套接字服务器的连接

Java 套接字客户端到不同网络上的服务器。

C ++套接字客户端到python服务器未创建连接

Java套接字客户端无法检测到服务器消息

C ++套接字服务器从Java客户端接收味精,但不是

服务器无法通过C中的套接字向客户端发送消息

Java套接字-将数据从客户端发送到服务器

Java套接字-将数据从服务器发送到客户端

C TCP/IP 套接字:如何将客户端套接字的输入同步到服务器套接字以交替进行

在服务器套接字C#中获取有关客户端的数据