免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1613 | 回复: 3
打印 上一主题 下一主题

socket编程问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-11 16:07 |只看该作者 |倒序浏览
int initsockid, newsockid;
if ((initsockid = socket(....)) < 0)  //创建套接字
    error("can't create socket";
if (bind(initsockid,....) < 0)           //绑定
    error("bind error";
if (listen(initsockid , 5) < 0)          //监听
    error("listen error";

for (;
    {
         newsockid = accept(initsockid, ...) /* 阻塞 */
         if (newsockid < 0)
         error("accept error";
         if (fork() == 0)
        { /* 子进程 */
                closesocket(initsockid);----------子进程中为什么要关闭initsockid监听套接字??
                do(newsockid); /* 处理请求 */
                exit(0);
    }
    closesocket(newsockid); /* 父进程 */  ------此处父进程中为什么不关闭initsockid套接字??
}

小弟刚接触网络编程,基础不好,请赐教!

论坛徽章:
0
2 [报告]
发表于 2008-11-11 17:29 |只看该作者
1. 子进程不关闭 initsockid 也是可以的, 但这个 initsockid对于子进程来不再有作用, 所以就关闭它了. (如果要用它还需要与父进程处理好同步关系)

2. 父过程还要用 initsockid 继续监听和接受基它连接, 怎么可以 close initsockid呢, 关闭 newsockid 原因和上面一样

文件描述符(fd)和socket fd 都是用一个少一个的, 有的还有限制, 所以没用的描述字就尽快关闭, 以便再利用....

论坛徽章:
0
3 [报告]
发表于 2008-11-11 17:43 |只看该作者
谢谢,子进程不再需要监听所以关闭监听套接字,知道了!

论坛徽章:
0
4 [报告]
发表于 2008-11-11 17:54 |只看该作者
原帖由 tianhailong 于 2008-11-11 17:43 发表
谢谢,子进程不再需要监听所以关闭监听套接字,知道了!


是啊鉴听是父进程负责的嘛, 子进程马上转到do()干活了, do完就exit()了啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP