Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解码TCP套接字中的数据_Java_Python_Sockets_Tcp_Chat - Fatal编程技术网

Java 如何解码TCP套接字中的数据

Java 如何解码TCP套接字中的数据,java,python,sockets,tcp,chat,Java,Python,Sockets,Tcp,Chat,我试图用python制作的服务器和java制作的客户端制作一个非常简单的聊天程序。但是,我不知道如何解码服务器从客户端接收的数据。客户端发送和编码到UTF-8 只是打印它看起来像这样: 首先从UTF-8解码,它看起来是这样的: 我假设NUL字符或\x00可以删除。对于包装整个消息的b''也是如此。第二个字符似乎指定了消息的长度。但我该如何解读?我应该手动删除字符吗?我知道这是一个非常基本的问题,以前可能有人问过,但我甚至不知道该搜索什么 在java客户机中,我有一个DataOutputStrea

我试图用python制作的服务器和java制作的客户端制作一个非常简单的聊天程序。但是,我不知道如何解码服务器从客户端接收的数据。客户端发送和编码到UTF-8

只是打印它看起来像这样:

首先从UTF-8解码,它看起来是这样的:

我假设NUL字符或\x00可以删除。对于包装整个消息的b''也是如此。第二个字符似乎指定了消息的长度。但我该如何解读?我应该手动删除字符吗?我知道这是一个非常基本的问题,以前可能有人问过,但我甚至不知道该搜索什么


在java客户机中,我有一个DataOutputStream对象,我使用这个方法:out.writeUTF(输入)

根据,它不会将UTF-8写入输出流。它说“首先,两个字节被写入输出流”,这解释了字符串前面的16位长度。即使在这之后,它也不写UTF-8,而是用Java自己的特殊编码来写,它调用的编码实际上是UTF-8的变体,而不是UTF-8


因此,首先,您需要明确您希望在客户机和服务器之间使用什么格式进行通信:协议。是普通的UTF-8吗?是不是
writeUTF
发出的奇怪的结构化编码?是别的吗?然后编写客户端和服务器以遵循该规范。

我不确定您的意思。我正在通过TCP连接发送UTF-8编码的消息。还有什么我正在做或应该知道的吗?为了回应@ejno所说的,看起来您正在使用某种结构化二进制数据编码,而不仅仅是UTF-8文本。从您提供的示例中,至少可以看到一些前面有16位长度的文本字符串。一般来说,要“从TCP套接字(或任何其他套接字)解码数据”,您需要遵循您希望数据采用的任何格式的规范;好的,很明显,它不会将UTF-8写入输出流。它说“首先,两个字节被写入输出流”,这解释了字符串前面的16位长度。即使在这之后,它也不写UTF-8,而是用Java自己的特殊编码来写,它调用的编码实际上是UTF-8的一个变体,而不是UTF-8。因此,首先,您需要澄清您希望在客户端和服务器之间通信使用的格式:协议。是普通的UTF-8吗?是不是
writeUTF
发出的奇怪的结构化编码?是别的吗?然后编写客户端和服务器以遵循该规范。