- 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
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)