以下は、ソケット サーバーのコードの一部です。いくつかの手順について明確ではないので、いくつか質問があります。私の質問は以下のとおりです。
- while (1) を使用する必要があるのはなぜですか?
- exit (-1) の目的は何ですか? ソケットを閉じますか?
- data_len が 1 として初期化されるのはなぜですか?
- サーバーが稼働していて、クライアント側からのデータがない場合、サーバーはどうなりますか? 閉まりますか?
実際には、コードの以下の部分について詳細な説明が必要です。
while(1) {
if ((new = accept(sock, (struct sockaddr*)&client, &sockaddr_len)) == ERROR) {
perror ("accept");
exit (-1);
}
printf("New client connected from port no %d and IP %s\n",ntohs(client.sin_port), inet_ntoa(client.sin_addr));
data_len = 1;
while (data_len) {
data_len = recv (new, data, MAX_DATA, 0);
if (data_len) {
send (new, data, data_len, 0);
data [data_len]='\0';
printf("Sent mesg: %s", data);
}
}
printf("Client Disconnected\n");
close(new);
}
close (sock);