小编Ice*_*man的帖子

发送和接收所有数据(C++ 套接字)

请帮助我找出客户端 - 服务器通信中的问题...

客户端使用此函数每秒 25 次从相机向服务器发送 jpeg 帧:

int SendAll(SOCKET &client_socket, string &data){
    int result, bytes_sent, sent_total, bytes_remain, package_size;
    result = bytes_sent = sent_total = package_size = 0;
    bytes_remain = data.size();
    while (bytes_remain && !result){
        package_size = (bytes_remain<KILOBYTE)?bytes_remain:KILOBYTE;
        bytes_sent = send(client_socket, &data[sent_total], package_size, 0);
        if (bytes_sent > 0){
            bytes_remain-= bytes_sent;
            sent_total+= bytes_sent;
        }
        else if(bytes_sent == SOCKET_ERROR){
            result = WSAGetLastError();
            break;
        }
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

在线程循环中:

while(CAMERA.Stream){
    OperationStartTime = GetTickCount();
    //RecvBuffer.resize(512);
    result = SendAll(CAMERA.Socket, CameraFrame);
    if(result != 0){
        cout …
Run Code Online (Sandbox Code Playgroud)

c++ sockets

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

如何停止epoll_wait?

我刚刚开始在 Linux 中编码,需要使用epoll. 我不知道如何停止epoll_wait

epoll 循环在单独的线程中运行,主函数处理控制台命令。输入“退出”命令后我需要停止服务器。简单地关闭主套接字没有任何效果。那么在这种情况下如何正确停止 epoll(可能会导致epoll_wait所有线程返回错误)?

c++ epoll

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

标签 统计

c++ ×2

epoll ×1

sockets ×1