- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
05_socket应用编程_专题讲座_v1.0.1(下)-王保明
轻松入门 实战应用 从项目开发角度 为你搭建完整的知识体系 wangbaoming
linux Socket-应用编程-专题讲座
written by 王保明
5Socket Api编程进价2
服务器端多进程并发子进程退出问题
TCP回射客户/服务器模型总结
TCP是个流协议
TCP是基于字节流传输的,只维护发送出去多少,确认了多少,没有维护消息与消息之间的边界,因而可能导致粘包问题。
粘包问题解决方法是在应用层维护消息边界。
僵进程与SIGCHLD信号
服务器端避免僵尸进程的方法:
1)通过忽略SIGCHLD信号,解决僵尸进程
signal(SIGCHLD, SIG_IGN)
2)通过wait方法,解决僵尸进程
signal(SIGCHLD, handle_sigchld);
wait(NULL)3)通过waitpid方法,解决僵尸进程
signal(SIGCHLD, handle_sigchld);
waitpid(-1, NULL, WNOHANG)
6Socket Api 与TCP/IP的11种状态
TCP/IP协议的11种状态
理解0:什么是主动套接字,什么是被动套接字?
理解1:为什么TCP/IP要三次握手,和四次断开?
理解2:客户端状态向前推进过程,服务器端状态向前推进过程
理解3:执行主动关闭的那一端,进入TIME_WAIT状态
理解4:TIME_WAIT 时间是多长2MSL (2倍的最大生命期时间)
原因:(ACK y+1)如果发送失败可以重发。
服务器端处于closed状态,不等于客户端也处于closed状态。。
理解5:图上几种状态,还有一种CLOSING状态
两端同时关闭 将产生closing状态,最后双方都进入TIME_WAIT状态。实验:
关闭服务方子进程,观察TCP/IP状态
关闭客户端,观察TCP/IP状态。
SIGPIPE
如果对方socket已关闭,对等方再发写数据,则会产生SIGPIPE信号
SIGPIPE信号会让进程终止(man 7 signal,阅读SIGPIPE默认ACT)
往一个已经接收FIN的套接中写是允许的,接收到FIN仅仅代表对方不再发送数据。
在收到RST段之后,如果再调用write就会产生SIGPIPE信号,对于这个信号的处理我们通常忽略即可。
signal(SIGPIPE, SIG_IGN); 结论:对SIGPIPE处理方法:1)忽略该信号即可signal(SIGPIPE, SIG_IGN);
2)捕捉。改变默认行为。TCP/IP 的RST段重置
1)服务器端启动、客户端启动
2)服务器端先kill与客户端通讯的子进程,服务器端会给客户端发送FIN分节
此时:只代表服务器端不发送数据了,不能代表客户端不能往套接字中写数据。
3)如果子进程此时写数据给服务器端(解除屏幕阻塞,输入字符aaaa),
将要导致TCP/IP协议重置,产生RST段;产生SIGPIPE信号。。
4)所以,一般情况下,需要我们处理SIGPIPE信号,忽略即可。
close与shutdown区别
close终止了数据传送的两个方向。
shutdown可以有选择的终止某个方向的数据传送或者终止数据传送的两个方向。
shutdown how=1就可以保证对等方接收到一个EOF字符,而不管其他进程是否已经打开了套接字。而close不能保证,直到套接字引用计数减为0时才发送。也就是说直到所有的进程都关闭了套接字。
思考1
客户端向服务器发送:FIN(close) E D C B A,
问:服务器还能收到数据吗?服务器还可以向客户端回报文吗?
客户端想在关闭之后,仍然能接收到回射服务器应答(shutdown)。
思考2
父进程中close(conn);会不会向客户端发送FIN报文段那?
文件的引用计数-1,当减少为0,才会发送引用计数。
思考3:
客户端//shutdown(sock, SHUT_WR);只关闭了写;
7五种I/O模型
阻塞I/O
说明1:当上层应用app1调用recv系统调用时,如果对等方没有发送数据(缓冲区没有数据),上层应用app1将阻塞(默认行为,被linux内核阻塞);
说明2:当对等方发送了数据,linux内核recv端缓冲区,有数据后,内核会把数据copy给用户空间。然后上层应用app1解除阻塞,执行下一步操作。非阻塞I/O
说明1: 上层应用程序app2将套接字设置成非阻塞模式。
说明2: 上层应用程序app2轮询调用recv函数,接受数据。若缓冲区没有数据,上层程序app2不会阻塞,recv返回值为-1
您可能关注的文档
- ((人教版))[[高一化学教案]]高一化学必修一第三章《金属及其化合物》复习.doc
- (1楼钢筋机械连接)技术交底.doc
- (13本高二).doc
- (0.6)《信号分析与处理》备课教案(第三章).doc
- (5月黄金档)2013高考化学冲刺秘籍难点15多离子盐溶液的结晶.doc
- (HLJ-QI-生-21)金属检测操作规程.doc
- (三上思品教案)第一二三四单元.doc
- (二)教材和教科书中采用定性评价的内容及标准.doc
- (人教新课标)六年级数学下册《正比例和反比例的意义(四)》同步练习.doc
- (五)第二章陆地和海洋练习题.doc
- GB/T 18282.1-2025医疗保健产品灭菌 化学指示物 第1部分:通则.pdf
- 《GB/T 18282.1-2025医疗保健产品灭菌 化学指示物 第1部分:通则》.pdf
- 市交通运输局局长2025年专题生活会对照“四个带头”含落实意识形态工作责任制方面个人对照检查发言提纲与乡镇(街道)围绕“四个带头”主题领导班子检视问题整改方案【2篇文】.docx
- 2025年市红十字会党支部书记、团市委党支部书记组织生活会“四个带头”个人对照检查发言材料【含意识形态工作责任制落实方面】2篇文.docx
- 市水利局党支部书记2025年组织生活会对照“四个带头”个人发言材料(含意识形态工作责任制落实方面)与市委领导班子围绕“四个带头”生活会查摆问题整改方案2篇文.docx
- 检察院领导班子2025年专题生活会对照“四个带头”检查材料与市民族宗教事务局党组书记、局长围绕“四个带头”生活会对照检查材料【含反面典型案例剖析】2篇文.docx
- 对照“四个带头”重点方面含反面典型案例查摆的问题解析生活会个人对照检查发言稿与市交通运输局局长“四个带头”含落实意识形态工作责任制方面个人对照检查发言提纲【2篇文】.docx
- 市水利局党支部书记2025年组织生活会对照“四个带头”个人发言材料(含意识形态工作责任制落实方面)与纪检委员“四个带头”方面个人对照检查材料【2篇文】.docx
- 2025年市中级人民法院领导班子、市投资促进局党支部书记对照“四个带头”方面生活会检视剖析材料(含典型案例剖析、意识形态)2篇文.docx
- 医院党委领导班子2025年检视问题整改落实方案与对照“四个带头”方面含反面典型案例查摆的问题解析生活会个人对照检查发言稿【2篇文】.docx
文档评论(0)