9

在 Ubuntu 上运行 c++。我以这种方式打开套接字:

socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW))

在使用结束时我需要做什么?只要程序运行,就会使用一些套接字,我需要一段时间检查它们吗?看看socket是否还存在?

4

2 回答 2

13

套接字一直存在,直到您调用close它的文件描述符。由于您有一个原始 IP 套接字,因此没有“活着”的概念。用完就关闭它。

于 2012-08-17T12:55:04.417 回答
10

正如其文档/手册页所说,socket() 返回一个打开的文件描述符,如果失败则返回 -1。这意味着您必须像关闭任何其他文件描述符一样关闭它:

close(sockfd);
于 2012-08-17T12:59:06.937 回答