下面是我的套接字服务器的一部分代码。我不清楚一些步骤,所以我有一些问题。我的问题如下:
- 为什么我需要使用 while (1)?
- 退出(-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);