我見過兩個例子,說明客戶端套接字如何接收來自服務器的消息。爲了從服務器接收UDP消息,應該綁定客戶端套接字?
實施例1:
服務器代碼 http://man7.org/tlpi/code/online/book/sockets/ud_ucase_sv.c.html
客戶機代碼 http://man7.org/tlpi/code/online/book/sockets/ud_ucase_cl.c.html
客戶程序創建一個套接字和插座結合的地址,從而使服務器可以發送其答覆。
if (bind(sfd, (struct sockaddr *) &claddr, sizeof(struct sockaddr_un)) == -1)
errExit("bind"); // snippet from ud_ucase_cl.c
實施例2:
服務器代碼 http://man7.org/tlpi/code/online/book/sockets/i6d_ucase_sv.c.html
客戶機代碼 http://man7.org/tlpi/code/online/book/sockets/i6d_ucase_cl.c.html
在例2中,客戶機代碼不結合其與地址插座。
問題:
是有必要的客戶端代碼,以便從服務器接收消息的地址綁定套接字?
爲什麼在第一個例子中,我們必須將客戶端套接字與地址綁定,爲什麼我們不必在第二個示例中?
那麼爲什麼在第二個例子中,我們不必使用綁定,仍然能夠發送消息到服務器? – q0987
你可以*總是*發送消息。您只是無法控制源接口和端口。 –