免费注册 查看新帖 |

Chinaunix

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

请教UNIX下网络编程的小问题:) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-02-26 10:23 |只看该作者 |倒序浏览
在学UNIX编程,写了一个服务器端和客户端的小程序,每当有客户连上,就创建一个线程进行处理,当客户端向服务器端发送“exit”t时,服务器端上处理连接的线程就会执行:
closd(sockfd);
return;
请问这样线程就会自己结束了吗?
我测试了一下,只要有一个客户离开,程序就不能正常运行,如果全都离开,服务器端就会有broken pipe的错误提示。
想请教大家这是什么问题呀?该怎么处理呢?谢谢

论坛徽章:
0
2 [报告]
发表于 2005-02-26 12:58 |只看该作者

请教UNIX下网络编程的小问题:)

broken piep说明你向已经关闭了的sockfd写数据~~~可以在主进程中利用signal(SIGPIPE,SIG_IGN)来忽略SIGPIPE这个信号~~

论坛徽章:
0
3 [报告]
发表于 2005-02-26 15:18 |只看该作者

请教UNIX下网络编程的小问题:)

谢谢啦:)
想再请教一下,在服务端每创建一个线程就会调用do这个函数,当do这个函数关闭套接口并返回时,线程是处于什么状态呀?结束了吗?
还有就是,客户端和服务器端不能同时并闭套接口,如果在一端已关闭的情况下,另一端进行读和写会有什么结果呢?怎么避免呀?
我想不明白,希望能指点一下
Thank you!

论坛徽章:
0
4 [报告]
发表于 2005-02-26 15:40 |只看该作者

请教UNIX下网络编程的小问题:)

原帖由 "相信坚持" 发表:
谢谢啦:)
想再请教一下,在服务端每创建一个线程就会调用do这个函数,当do这个函数关闭套接口并返回时,线程是处于什么状态呀?结束了吗?

结束了~~~
[quote]原帖由 "相信坚持"]还有就是,客户端和服务器端不能同时并闭套接口,如果在一端已关闭的情况下,另一端进行读和写会有什么结果呢?怎么避免呀? [/quote 发表:

如果某一端正常关闭套接口另一端正在read的话那么read返回零,如果是非正常关闭(没有发送FIN分节)的话另一端的read就无从知道,一直在那里傻傻的等。如果套接口已经关闭,那么向这个套接口写数据的话就会收到SIGPIPE的信号,默认处理是终止进程,我们一般不希望这样,那就忽略它。

论坛徽章:
0
5 [报告]
发表于 2005-02-27 23:18 |只看该作者

请教UNIX下网络编程的小问题:)

谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP