java - 可区分的套接字输入

标签 java python android sockets

我试图通过 tcp 套接字从 android 客户端发送多个数据项到 python 服务器。客户端的用户可以做出多种选择,因此我使用作为字符发送的数字来区分请求类型。我必须根据选择发送选择和特定数据。对于当前选择(在本例中选择 1),我需要选择和 2 个字符串字段以及图像。我让图像传输独立工作,并且选择独立工作。我现在遇到的问题是,选择中的缓冲区读取也在紧随其后的图像的字节流中读取。

最佳答案

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

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

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

显然,您的操作码可以是您想要的任何内容,这只是一个示例。

关于java - 可区分的套接字输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4820021/

相关文章:

java - Spring mvc - 如何将所有错误的请求映射映射到单个方法

python - 将 numpy 数组置换为 ndarray 或矩阵

python - Numpy 数组点积

android - 删除 SwipeRefreshLayout 中的加载微调器

android - 在 tabhost 中启动 Activity 而不是 fragment

java - 如何使用 java Webservice 接收/发送文件

java - 使用单独的包进行程序输出

java - ASM 字节码操作 - istore 和 istore_<n>

python - 如何公开具有多个参数的 dbus 方法?

java - android数据绑定(bind)错误: cannot find symbol