- 1、本文档共53页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《+Linux+Socket编程》读书笔记》.doc
书名:《实战 Linux Socket编程》
作者:Warren W.Gay
翻译:詹俊鹄 于卫
出版:西安电子科技大学出版社
第一章 套接口简介
1、套接口是通信中的一个端点,套接口创建后,就如同一个文件描述符,可以使用文件的I/O函数对它进行读、写和关闭操作。
2、套接口和已打开的文件之间存在如下差别:
不能在套接口上调用函数lseek(这个限制也适用于管道)
套接口可以和网络地址关联,文件和管道却不能
套接口具有很多能够通过ioctl进行查询和设置的选项
套接口必须在正确的状态下才能实现输入和输出,而已打开文件在任何时候都可以进行读或写操作。
3、套接口和管道不同,它允许进行进行双向通信,即可以使用同一个套接口描述符进行读和写【代码test1.2.c】。
4、创建套接口
#include sys/types.h
#include sys/socket.h
int socketpair ( int domain, int type, int protocol, int sv[2]);
domain:套接口的域名,表示使用哪个地址族,要么是AF_LOCAL要么是AF_UNIX。地址族的作用是指明使用哪一种地址类型。AF_LOCAL(AF_UNIX)表示使用本地地址规则来生成地址,而AF_INET则表示使用IP地址规则生成地址。
type:套接口的类型,可选值为SOCK_STREAM、SOCK_DGRAM
protocol:使用的协议。一般情况下为0,这样可以使用适合所选domain的正确缺省协议。
sv:套接口文件描述符数组。每个整型值代表一个套接口,类似于管道中的某一端的端点。
如果函数调用成功,返回0,否则返回-1,错误值存放在errno中。
5、socketpair用例请参看【代码test1.1.c】
6、可以对套接口调用read、write、close 等函数,请参看【代码test1.2.c】
7、使用close关闭端口,接收端会收到文件结束符标志,close是全关闭,也就是说关闭了套接口后,既不能读也不能写。shutdown半关闭,也就是说不能写,但是可以使用该套接口从读取对端发送的数据。
#include sys/socket.h
int shutdown (int s, int how);
how 有三个可选值:SHUT_RD、SHUT_WR、SHUT_RDWR
如果函数调用成功,返回0,否则返回-1,错误值存放在errno中。
仅对套接口的写端进行关闭,可以解决如下问题:
内核缓冲区中任何将要发送的数据都将作废
向远程套接口发送文件结束标志,告诉对方进程,不再会向对方发送数据
本地半关闭的套接口仍然可以进行读操作
不管套接口的访问记数为多少,shutdown都将访问数清0。如果使用dup或dup2复制了套接口描述符,则只有所有的描述符都被close才能关闭套接口,而shutdown则能够一次性关闭复制的所有套接口。因此不论是要全关闭或半关闭套接口,都应该使用shutdown,而不是close。然而shutdown不会释放文件描述符,因此shutdown执行后,还应该调用close释放文件描述符。
8、当调用fork生成子进程时,任何在fork操作之前存在的套接口都将复制到子进程中【代码test1.2.c】。
9、关闭从套接口的读入将忽视任何等待读入的数据,如果有更多的数据从远程端发送过来,也将同样被忽视掉,如果这时进程尝试从套接口进行读入,就会发生错误。
第二章 域和地址族
1、套接口不一定需要地址,比如函数socketpair就生成了一对相互连接但是没有地址的套接口,这就是所谓的无名套接口。
2、匿名调用:在相互连接的两个套接口中有一个套接口不需要地址,例如连接到一个远程套接口时,只要确定远程套接口的地址,但是发出调用的本地套接口可以是匿名的。此时本地套接口不需要bind
3、socktpair 和 socket 函数都允许使用其他协议,而不只是TCP/IP 协议。
4、int socketpair ( int domain, int type, int protocol, int sv[2]);
domain:套接口的域名,表示使用哪个地址族,要么是AF_LOCAL要么是AF_UNIX。地址族的作用是指明使用哪一种地址类型。AF_LOCAL(AF_UNIX)表示使用本地地址规则来生成地址,而AF_INET则表示使用IP地址规则生成地址(IPv4等)
一般情况下,protocol参数的值为0,这使操作系统可以选择适合所选domain的正确的缺省协议
5、通用地址结构
#include sys/socket.h
struct socketaddr{
sa_family_t sa_fam
您可能关注的文档
- 《#Lehman Brothers 2016》.pdf
- 《•SIM Lite Measurements Near & Far》.pdf
- 《•Stellar Astrophysics With SIM》.pdf
- 《(C++)Jane Open Source Hierarchical Translation》.pdf
- 《(Littelfuse)使用TCMOV压敏电阻进行符合UL1449的设计》.pdf
- 《(Socket程序设计)讲义(参考)》.doc
- 《(Symantec Endpoint Protection)禁止USB设备和特定应用程序》.doc
- 《(英论1)Translation_Skills_and_Principles_of_English_Movie_Titles》.doc
- 《(转自寄托)拿到offer后的各项手续大总结(包括visa等)——适用于CUHK授课式》.doc
- 《+GF+SIGNET_8850-1_电导型_变送器说明书》.doc
- 五年级数学上册5简易方程2解简易方程第8课时实际问题与方程3教学设计新人教版.doc
- 2024_2025学年新教材高中生物第2章细胞的结构和生命活动第3节第1课时细胞质膜具有选择透过性教案苏教版必修1.doc
- 江苏专用2025版高考地理一轮复习第十二章人类与地理环境的协调发展1人类与地理环境的协调练习含解析新人教版.doc
- 2024_2025学年高中化学第一章物质结构元素周期律第三节化学键练习含解析新人教版必修2.docx
- 2024_2025学年高中政治专题二君主立宪制和民主共和制:以英国和法国为例综合训练含解析新人教版选修3.docx
- 2024_2025学年高中生物课时分层作业18捕获光能的色素和结构含解析新人教版必修1.doc
- 2024_2025学年高中政治专题一古典政治经济学巨匠的理论遗产第3框李嘉图的理论贡献学案新人教版选修2.doc
- 2024_2025学年新教材高中生物第6章细胞的生命历程3细胞的衰老和死亡学案2新人教版必修1.doc
- 2024_2025学年新教材高中生物第6章生物的进化1生物有共同祖先的证据学案新人教版必修2.doc
- 司机保证书15篇 .pdf
文档评论(0)