我创建了一个简单的 C++ 服务器,它试图vector<uint8_t>通过套接字将 a的字节发送到 Python 客户端。我已经让所有服务器和客户端连接正常,但是数据在 python 中输出不正确。我首先发送一个整数,描述期望的字节数,然后发送字节。但是,当我运行我的 python 脚本并调用recv套接字时,我有时会得到不正确的字节数值。
我已经调试了 C++ 和 Python 代码,它显示了一些奇怪的行为。首先,我意识到在调试 Python 代码时它运行良好。事实证明,在我的 Python 脚本中,如果我sleep(1)在读取整数标头的前 4 个字节和读取其余字节之间调用,它会起作用。但是,当我在recv没有睡眠的情况下进行多次通话时,事情就会出错。我还检查了字节字节序的内容是否正确。我什至在服务器和客户端之间添加了一个握手程序,以确保它们能很好地协同工作。
对于 C++:设置套接字:
int Server::setup_socket(int port){
int server_fd, new_socket;
struct sockaddr_in address;
int opt = 1;
int addrlen = sizeof(address);
// Creating socket file descriptor
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0){
perror("socket failed");
exit(EXIT_FAILURE);
}
// Forcefully attaching socket to the port
if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))){ …Run Code Online (Sandbox Code Playgroud)