c ++做socket关闭自己运行时

时间:2018-03-27 17:02:02

标签: c++ linux sockets http networking

我尝试使用谷歌找到这个问题的答案,但没有结果。
这是:例如,我有一个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->
}

如果不是,是否通过“堆”中的指针声明它是否有意义?

附:顺便问一下:我的代码安全吗? :)

1 个答案:

答案 0 :(得分:0)

如果远程主机关闭套接字,则tcp连接将关闭,但服务器所拥有的套接字是一个仍然分配的资源。您需要自己致电close(soc)以释放此资源。套接字不会自行关闭。