我在C中工作,使用POSIX套接字API。
我不确定何时连接数据报套接字是合适的。据我了解,UDP是无连接的,SOCK_DGRAM套接字使用UDP。那么当在数据报套接字上使用connect()和accept()时会发生什么?
在我看来,连接它们并使用send()/ recv()比不连接它们和使用sendto()/ recvfrom()更容易。
连接时套接字的功能是否存在差异,或者这仅仅是一种抽象?
答案 0 :(得分:6)
connect()
使用默认目标对等体的便利性而不是使用send()
明确指定目标时,数据报套接字上的 sendto()
是合适的。没有功能差异。
connect()
AF_UNSPEC地址将清除数据报套接字的默认对等体。 (我认为,这种最后一种行为得到广泛支持,但只有recently formalized。)
connect()
会将recv()
限制为来自对等方的数据。
accept()
都是错误(EOPNOTSUPP)。