我有一个问题:
- 对于客户端发送的每条消息,服务器都会创建一个子进程(fork()),并且每条消息都由不同的子进程读取。
问题:
- 有什么办法可以删除 sockaddr_in 结构,这样当服务器再次进入无限循环时,它会等待不同的客户端,并且每个孩子都有不同的客户端地址。
A part of the server code:
struct sockaddr_in from;
int main(int argc, char *argv[]) {
int32_t stringLen;
initSocket();
printf("waiting for a connection\n");
while (true) {
int n;
socklen_t length = sizeof(struct sockaddr_in);
n = recvfrom(sock, &stringLen, sizeof(stringLen), 0,
(struct sockaddr *) &from, &length);
if (n > 0) {
int pid = fork();
printf("fork() pid = %d\n", pid);
if (pid < 0) {
error("handling request");
}
if (pid == 0) {
printf("Client connected...\n");
handle_request(stringLen);
}
cout << " PID : " << pid << endl;
}
}
}
Thank you !