因为我目前只用 C 语言做这个项目,所以到目前为止我只将我的网络服务器用作单线程应用程序。不过,我不想再这样了!所以我有以下代码来处理我的工作。
void BeginListen()
{
CreateSocket();
BindSocket();
ListenOnSocket();
while ( 1 )
{
ProcessConnections();
}
}
现在我fork();
在开始之前添加了ProcessConnection();
这有助于我允许多个连接!但是,当我添加用于守护此答案中找到的应用程序的代码时。我遇到了一个小问题,使用fork()
将创建我整个正在运行的应用程序的副本,这就是fork()
. 所以,我想解决这个问题。
我的ProcessConnection()
长相是这样的
void ProcessConnections()
{
fork();
addr_size = sizeof(connector);
connecting_socket = accept(current_socket, (struct sockaddr *)&connector, &addr_size);
if ( connecting_socket < 0 )
{
perror("Accepting sockets");
exit(-1);
}
HandleCurrentConnection(connecting_socket);
DisposeCurrentConnection();
}
我将如何简单地在上面或之后添加几行connecting=socket = accept
......以使其同时接受多个连接?我可以使用fork();
但归结为DisposeCurrentConnection();
我想终止该进程并让父线程运行。