诸如httpd那样的服务,一次开多个进程,每个进程都监听同一个端口,但是一个端口怎么绑定多次呢?
如上。 问题点数:20、回复次数:5Top
1 楼x86(大雪)回复于 2005-11-03 14:30:43 得分 10
不用多次bind, 每本讲网络编程的书都提到的.
大致是这样:
listenfd = socket(...);
bind(listenfd, ...);
listen(listenfd, ...);
for(;;) {
connfd = accept(listenfd, ...);
if((pid = fork()) == 0) {
close(listenfd);
process_request();
close(connfd);
exit(0);
}
close(connfd);
}
Top
2 楼asphp(AwaiLi)回复于 2005-11-03 14:52:44 得分 4
bind一次
accept多次
Top
3 楼hundlom(托克维尔)回复于 2005-11-03 20:40:20 得分 2
只有一个在监听,有数据到来后就 fork一个新进程处理,原来的进程继续负责监听...Top
4 楼blueflame(蓝色的火焰)回复于 2005-11-03 23:10:30 得分 2
-_-b,楼主同志,好好看看书……Top
5 楼yingle2000(音乐天堂)回复于 2005-11-04 10:51:34 得分 2
httpd的服务中所有的进程中只有一个进程处于监听状态的。Top




