C言語をリンク内容
こちらの記事で学習しています。
初心者で知識が枯渇しているので教えてください。
C
1/* ソケットを生成 */ 2 3 if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) > 0) { 4 5 perror("client: socket"); 6 7 exit(1); 8 9 } 10 11 12 13 /* 14 15 * client_addr構造体に、接続するサーバのアドレス・ポート番号を設定 16 17 */ 18 19 bzero((char *)&client_addr, sizeof(client_addr)); ←ここ! 20 21 client_addr.sin_family = PF_INET; 22 23 client_addr.sin_addr.s_addr = inet_addr(argv[1]); 24 25 client_addr.sin_port = htons(8000); 26 27 28
この中の
C
1bzero((char *)&client_addr, sizeof(client_addr));
この部分がわかりません。
調べていくと・・・
参考記事
つまり、このコードは
C
1bzero((char *)&client_addr, sizeof(client_addr));
↓
C
1(char *)&client_addr に対して sizeof(client_addr)の文だけ0で埋めよ
と書いてあるのだと思います。(たぶん・・・)
それで私が理解できないのはこの
C
1(char *)&client_addr 2と 3sizeof(client_addr)
の意味が理解できないです。
#質問1 sizeof(client_addr)
まず、
C
1sizeof(client_addr)
この文は要するにclient_addrの分だけ埋めよ・・・という意味だと思うのですが
client_addrに量・大きさという概念はないはずですよね?
上のほうに
C
1 struct sockaddr_in client_addr; 2 ↑ ↑ 3 この意味が 変数 4 まだわからない 5 ・・・。
構造体の初期化を宣言する文がありますが・・・
やっぱ量とかはないはずですよね?
なので
client_addrの分だけ埋めよ
この埋めよの意味が理解できないのです。
(うまく説明できない・・・)
#質問2
C
1(char *)&client_addr に対して sizeof(client_addr)の文だけ0で埋めよ
の中の
C
1bzero((char *)&client_addr
この文の意味がわかりません。
構造体の中の何かを埋めることはわかるのですが
結局何がしたいのかが分かりません・・・。
基本的なことからわからないです。
分からないので参考になるリンクまたは説明をお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/25 05:52
2019/08/25 06:23
2019/08/25 06:35
2019/08/25 07:21
2019/08/25 10:25 編集
2019/08/25 10:32
2019/08/25 10:33