可区分的套接字输入

时间:2011-01-27 17:58:46

标签: java python android sockets

我试图通过tcp套接字从android客户端向python服务器发送多个数据项。客户端上的用户可以做出多个选择,因此我使用作为字符发送的号码来区分请求类型。我必须根据选择发送选择和具体数据。对于当前选择(在这种情况下选择1)我需要选择和2个字符串字段和图像。我让图像传输独立工作,并且选择自行完成。我现在遇到的问题是,选择中的缓冲区读数也是直接读取图像的字节流。

1 个答案:

答案 0 :(得分:2)

如果在发送数据包之前写入,TCP会将您的写入合并到一个数据包中,这意味着信息将被连接接收。

一个常见的解决方案是在数据之前加入“操作码”。 例如,在发送整数之前前缀CHOICE。当您在python脚本中读取CHOICE时,您知道您正在接收一个整数,因此只读取了那么多数据。 在发送映像之前,请在其前面加上IMG和要读取的字节数。这样,您可以根据需要读取多个字节,然后查找下一个操作码。

您的数据包应如下所示:CHOICE1IMG<number of bytes><image bytestream>

显然你的操作码可以是你想要的任何东西,这只是一个例子。