我正在编写一个TCP并发服务器,它将分叉子进程来处理每个新连接。假设 ClientA 正在与 ChildA 交互,而服务器仍在同一端口上侦听。如果我们用SIGINT信号杀死服务器, ClientA 和 ChildA 继续进行交互。
因此,在这种情况下,如果我重新启动服务器,它显然会在Address already in use
函数调用上抛出bind
。
这个问题的所有可能解决方案是什么?通常遵循哪一个?
答案 0 :(得分:2)
2个选项。
kill
ChildA 进程。
close
后,{li> fd
listen
用于 ChildA 中的bind
/ fork
{{1}}
答案 1 :(得分:1)
在绑定之前在侦听套接字上设置套接字选项SO_REUSEADDR
。