如何在python套接字和c ++套接字之间通信?

时间:2019-05-16 13:56:57

标签: python c++ sockets python-sockets

我正在设置一个TCP套接字,该套接字通过二进制特定协议获取消息。 当我通过python套接字发送json字符串时,python迫使我使用编码功能,并且当数据到达服务器时,我不知道如何使其文字和可读。

这是针对客户端服务器游戏的,客户端以二进制协议(1字节-代码,4字节-data_length,data_length-{“ username”:“ ...”,“ password”:“)发送登录请求。 ..“}

示例:

python:

s.send("hey".encode())

c ++:

char* data = new char[3 + 1];
data[3] = NULL;
int res = recv(client_soc, data, 3, 0);
//data content is unreadable

我希望输出为“嘿”,但实际输出为===

1 个答案:

答案 0 :(得分:0)

您需要做两件事:

1)编写一个函数以接收整个消息。

2)编写用于解码和解释消息的函数。

您需要首先执行步骤1,因此请专注于此。看起来像这样:

  1. 最多读取四个字节。
  2. 如果少于四个字节,请继续阅读,直到有四个字节为止。
  3. 从四个字节中解码长度。
  4. 如果您有完整的消息,请停止,完成。
  5. 尝试读取消息中剩余的字节数。
  6. 转到步骤4。

因此,请遵循此模式编写代码,如果您遇到困难,请询问有关陷入困境的特定步骤的问题。然后,您可以继续编写代码以解码消息。