我想知道是否有任何方法可以创建已创建但已关闭的套接字ID。我们使用以下代码行来创建套接字。
sock = socket(AF_INET, SOCK_STREAM, 0);
假设此调用将id返回为3,并且在程序过程中关闭此套接字。反正我是否创建了一个具有相同id的套接字3?
答案 0 :(得分:1)
对open()
或socket()
等调用返回的文件描述符的唯一控制是使用的文件描述符是尚未使用的最低正整数。这只是在unix中。不能代表Windows。
如果您需要让代码使用新连接代替旧连接,最好的办法是添加一个间接层 - 创建一个套接字描述符数组,并将连接称为此数组的索引而不是传递描述符本身。
答案 1 :(得分:1)
没有。您无法控制将生成哪些ID。用这样的假设编写代码有经常失败的危险可能性。它的设计也很糟糕。
依赖于套接字句柄的Intead,定义您自己的结构/ ID以识别连接。