UDP套接字是否过期?

时间:2015-08-01 09:33:58

标签: sockets udp

我想全局初始化一个套接字,sendto可以使用它来稍后发送udp数据包。我不想在我即将发送数据包时初始化套接字,而是在程序首次启动时初始化它,然后在不同的时间访问它。

如果套接字在那里坐了几个小时没有激活会导致问题吗?

3 个答案:

答案 0 :(得分:3)

没有............................

答案 1 :(得分:2)

这取决于。套接字本身仍然有效,您可以明确地将其关闭,就像它是一个文件一样。但是,在谈论细节时,如果使用特定IP 而不是0.0.0.0 绑定套接字,则IP本身可能会消失(由于接口关闭或更改设置),这会导致套接字无法使用。如果接口关闭,如果以后再次启动并且具有相同的IP,则可以再次使用该套接字。

答案 2 :(得分:1)

这是一个特定于操作系统的问题。

说到类Unix操作系统,套接字被视为打开的文件,因此您使用的唯一资源是打开文件表中的条目,通常受限于ulimit:

myaut@panther:~> ulimit -a
...
open files                      (-n) 1024

Socket还会为其缓冲区占用少量内核内存。但由于它是开放文件,因此在您明确关闭它或您的程序已经死亡之前不应该关闭它。

其他操作系统可能具有类似的限制/要求。

然而,由于现在的内存非常便宜,保留预先打开的套接字在延迟方面有更多好处。