クライアントソケットがサーバーからメッセージを受信する方法を示す2つの例を見てきました。
例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では、クライアントコードはそのソケットをアドレスにバインドしません。
質問:
サーバーからメッセージを受信するために、クライアントコードがソケットをアドレスにバインドする必要がありますか?
最初の例では、クライアントソケットをアドレスでバインドする必要があるのはなぜですか、2番目の例ではバインドする必要がないのはなぜですか?