我试图用谷歌找到这个问题的答案,但没有结果。
这是:例如,我有一个 HTTP 服务器,它处理来自浏览器的请求,解析 HTTP header 等。如果客户端关闭连接,我的原始套接字是否保持打开状态?
struct sockaddr_storage remoteaddr;
int client_sock = accept(sock_des, (sockaddr*)&remoteaddr, (socklen_t*)sizeof(remoteaddr));
std::thread* handler = new std::thread(handle_connection, client_sock, handler);
handler->join();
static void* handle_connection(int csock, std::thread& th_handler)
{
// foo
close(csock);
//th_handler->
}
如果不是,它是否由“堆”中的指针声明是否有意义?
附言顺便问一下:我的代码安全吗? :)
最佳答案
如果远程主机关闭套接字,则 tcp 连接将关闭,但服务器拥有的套接字是保持分配的资源。您需要自己调用 close(soc)
来释放此资源。套接字不会自行关闭。
关于c++做套接字关闭自己运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49518590/