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

时间:2013-05-25 14:06:10

标签: java python sockets tcp chat

我正在尝试使用python中的服务器和java中的客户端进行非常简单的聊天程序。但是我不知道如何解码服务器从客户端收到的数据。客户端发送并编码为UTF-8。

只需打印即可:http://i.imgur.com/0usK6j7.jpg

首先从UTF-8解码它看起来像这样:http://i.imgur.com/Ctwivl4.jpg

我假设可以删除NUL字符或\ x00。包含整个消息的b''也一样。第二个字符似乎指定了消息的长度。但是我如何解码呢?我应该手动删除字符吗?我知道这是一个非常基本的问题,之前可能已被问到,但我甚至不知道要搜索什么。

1 个答案:

答案 0 :(得分:3)

  

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

根据documentation of that method,它不会将UTF-8写入输出流。它说“首先,两个字节写入输出流”,这解释了字符串之前的16位长度。即使在那之后它也没有写UTF-8,它用Java自己的特殊编码编写,它称之为Modified UTF-8,它实际上是CESU-8的变体,而不是UTF-8。

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