我最近一直在學習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