小编Mic*_*ray的帖子

通过套接字从 C++ 服务器向 Python 客户端发送数据的问题

我创建了一个简单的 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)

c++ python sockets

1
推荐指数
1
解决办法
1106
查看次数

标签 统计

c++ ×1

python ×1

sockets ×1