1

我想知道是否有任何方法可以创建一个已创建但已关闭的套接字 ID。我们使用以下代码行来创建一个套接字。

sock = socket(AF_INET, SOCK_STREAM, 0);

假设此调用返回 id 为 3,并且此套接字在程序执行过程中关闭。无论如何,我是否可以创建一个具有相同 ID 3 的套接字?

4

2 回答 2

1

不,您无法控制将生成哪些 ID。以这样的假设编写代码具有经常失败的危险可能性。它的设计也很糟糕。

不依赖于套接字句柄,定义您自己的结构/ID 来识别连接。

于 2012-05-21T07:44:45.830 回答
1

open()您对调用or等​​返回的文件描述符的唯一控制socket()是使用的文件描述符是尚未使用的最小正整数。那只是在unix中。不能为 Windows 说话。

如果您需要让代码使用新连接代替旧连接,最好的办法是添加一个间接层 - 例如,创建一个套接字描述符数组,并将连接作为该数组的索引引用,而不是传递描述符本身。

于 2012-05-21T07:08:45.207 回答