我尝试使用谷歌找到这个问题的答案,但没有结果。
这是:例如,我有一个HTTP服务器,它处理来自浏览器的请求,解析HTTP标头等。如果客户端关闭连接,我的原始套接字是否仍然打开?
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->
}
如果不是,是否通过“堆”中的指针声明它是否有意义?
附:顺便问一下:我的代码安全吗? :)
答案 0 :(得分:0)
如果远程主机关闭套接字,则tcp连接将关闭,但服务器所拥有的套接字是一个仍然分配的资源。您需要自己致电close(soc)
以释放此资源。套接字不会自行关闭。