为什么UDP没有“accept()”?

时间:2013-02-15 19:59:00

标签: tcp udp

我从实际意义上问它。在TCP中,accept()将为每个connect()提供新的套接字。它允许仅与一个服务器端口进行多个并发通信。

问题是为什么我们在UDP中没有这样的便利?不要告诉我UDP是无连接的,因此......从逻辑上讲,accept()与此无关(底层IP无论如何都是无连接的)。

一个结果是您必须应用大量UDP端口,这可能会使防火墙设置复杂化。那么我的下一个问题是,关于端口和多路复用的多客户端UDP应用程序的解决方案是什么?在某些情况下,我想在UDP数据包中嵌入客户端信息,让服务器区分。但本身没有accept(),某些待办事项很难(例如,使用OpenSSL的UDP)。

感谢您的见解。

1 个答案:

答案 0 :(得分:2)

由于UDP是无连接协议,因此您不需要它。您可以通过每个传入的UDP数据报获得远程地址信息,因此您可以知道它是谁,因此您不需要每个连接套接字来告诉您。您根本不需要应用大量UDP端口。你只需要一个。