我最近一直在学习Linux套接字编程,主要是从this site。为什么socketpair()允许SOCK_DGRAM类型?
该网站说,使用域/类型组合PF_LOCAL
/SOCK_DGRAM
...
提供本地主机内的数据报服务。请注意,此 服务是无连接,但可靠,可能的例外 如果内核缓冲区应该耗尽,数据包可能会丢失。
我的问题,那么,为什么socketpair(int domain, int type, int protocol, int sv[2])
让这个组合,根据其手册页时...
的socketpair()调用创建 一位不愿透露姓名对连接插座指定的域名,指定的类型...
这里没有矛盾吗?
我认为在PF_LOCAL
和PF_INET
域SOCK_DGRAM
暗示UDP,这是一种无连接协议,所以无法调和socketpair()
的要求似乎的冲突来创建连接的套接字。
在数据报套接字上使用'connect()'还可以在该套接字上使用'recv()'和'send()',而不必使用'recvfrom()'和'sendto()'。 –
@RemyLebeau我认为你可以在未连接的套接字上使用'recv()',你只是不知道它来自哪里。但是你对'send()'是正确的。 – Barmar