从TCP套接字Java读取时数据无法正确显示

问题描述 投票:0回答:1

我对Java套接字和进程是陌生的。我正在尝试从TCP套接字读取信息,但是当我收到数据时,某些信息没有正确显示。 (我认为这可能是编码问题,我正在读取的过程是Genivi DLT守护程序。)>

这里是我的代码示例:

try (Socket socket = new Socket(hostname, port)) {

            InputStream input = socket.getInputStream();
            InputStreamReader reader = new InputStreamReader(input);

            BufferedReader br1 = new BufferedReader(reader);         

            String line;


            while((line = br1.readLine())!=null) {
                String s = br1.readLine();
                byte[] utf8Bytes = s.getBytes("UTF-8");
                if(s.contains("SYS"))
                    System.out.println(s);
            }

这里是the data that should be displayed的照片。

这是它在控制台上的实际显示方式:

ÒWAVAè5ÓrQSYS ² (PathologyCollectorCPU.cpp: getLoad(...)@69): {"Name": "Core", "cpuName": "cpu0", "percent": 33, "totalUser": 1533306, "totalNice:" 0, "totalSys": 1216838, "totalIdle": 5681926}

有人知道为什么会这样,或者我应该采取一些解决问题的方法吗?

编辑:经过一番挖掘后,我认为我在这里找到了有关该协议的一些信息:第16页的https://www.autosar.org/fileadmin/user_upload/standards/foundation/1-0/AUTOSAR_PRS_DiagnosticLogAndTraceProtocol.pdf。如果您还有其他建议,将不胜感激。

我对Java套接字和进程是陌生的。我正在尝试从TCP套接字读取信息,但是当我收到数据时,某些信息没有正确显示。 (我认为这可能是一种编码...

java sockets bufferedreader
1个回答
-1
投票

您正在使用TCP(传输控制协议),它通过流在网络上发送数据。因此,您需要为发送的每个数据包定义“数据长度”。

© www.soinside.com 2019 - 2024. All rights reserved.