c++做套接字关闭自己运行时

标签 c++ linux sockets http networking

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

相关文章:

c++ - 为什么我需要返回链表中的头部?C++

c - 动态库动态附加

c - 用户空间到内核空间和 sysfs 以及如何使用 sysfs 更改 igmpv3 pkt 中的一个保留值

linux - 使用 ls 以位为单位的文件大小?

C++ 如何加入多播 mpeg 流?

c++ - 如何从静态类函数初始化静态类对象

c++ - 我在这里得到结构拷贝吗?

c++ - setter 方法中的 make_shared 行为类似于创建拷贝

c - C 中的 AF_PACKET 套接字不使用 SOCK_RAW 发送空 UDP 数据包

python - 如何在Python中通过ssl使用套接字连接到gmail