套接字数据检测结束

时间:2018-11-02 19:45:46

标签: java sockets

我对Java还是很陌生,我正在尝试在服务器和客户端之间建立套接字连接,并被告知要使用Java。

在我开始用Java进行编码之前,我正在使用QT,它具有一个用于从套接字接收数据的信号/插槽,我发现这种方式非常有效。

似乎在Java中,我需要在数据末尾实现一个类似换行符“ \ n”的字符,以便我的客户说我已经发送到服务器了。但是QT似乎在寻找消息的标题和页脚(在数据包级别而不是ASCII代码),并且可以感知传输的结束,而无需查看自身的数据以查找特殊字符或等待连接关闭。

我主要接收的是十六进制代码,而不是ASCII,所以有一个结尾字符(第\ n行)是个坏主意,因为我需要这些字符作为数据而不是命令,所以readline()是无法使用的。

另一方面,我的数据长度从4字节变化到120字节,并且接收消息之间的时间从0.001秒变化到一个小时,因此我无法使用read()方法,因为它会杀死消息并分开彼此之间的字节数。例如,如果2条消息以2、5个字节的形式背对背,则它们可能会误读为10个字节的单个消息。

1 个答案:

答案 0 :(得分:-3)

您可以使用Apache JMeter。发送十六进制字符串作为byte []。您也可以使用eom(消息结尾)。