请帮助我找出客户端 - 服务器通信中的问题...
客户端使用此函数每秒 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) 我刚刚开始在 Linux 中编码,需要使用epoll. 我不知道如何停止epoll_wait。
epoll 循环在单独的线程中运行,主函数处理控制台命令。输入“退出”命令后我需要停止服务器。简单地关闭主套接字没有任何效果。那么在这种情况下如何正确停止 epoll(可能会导致epoll_wait所有线程返回错误)?