应该何时连接数据报套接字?

时间:2013-11-26 16:41:14

标签: c sockets posix

我在C中工作,使用POSIX套接字API。

我不确定何时连接数据报套接字是合适的。据我了解,UDP是无连接的,SOCK_DGRAM套接字使用UDP。那么当在数据报套接字上使用connect()和accept()时会发生什么?

在我看来,连接它们并使用send()/ recv()比不连接它们和使用sendto()/ recvfrom()更容易。

连接时套接字的功能是否存在差异,或者这仅仅是一种抽象?

1 个答案:

答案 0 :(得分:6)

当您希望connect()使用默认目标对等体的便利性而不是使用send()明确指定目标时,数据报套接字上的

sendto()是合适的。没有功能差异。

connect() AF_UNSPEC地址将清除数据报套接字的默认对等体。 (我认为,这种最后一种行为得到广泛支持,但只有recently formalized。)

数据报套接字上的

connect()会将recv()限制为来自对等方的数据。

无论“连通性”如何,数据报套接字上的

accept()都是错误(EOPNOTSUPP)。