linux+socket编程》读书笔记

linux+socket编程》读书笔记

ID:22688961

大小:309.00 KB

页数:54页

时间:2018-10-30

linux+socket编程》读书笔记_第1页
linux+socket编程》读书笔记_第2页
linux+socket编程》读书笔记_第3页
linux+socket编程》读书笔记_第4页
linux+socket编程》读书笔记_第5页
资源描述:

《linux+socket编程》读书笔记》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、书名:《实战LinuxSocket编程》作者:WarrenW.Gay翻译:詹俊鹄于卫出版:西安电子科技大学出版社第一章套接口简介1、套接口是通信中的一个端点,套接口创建后,就如同一个文件描述符,可以使用文件的I/O函数对它进行读、写和关闭操作。2、套接口和已打开的文件之间存在如下差别:l不能在套接口上调用函数lseek(这个限制也适用于管道)l套接口可以和网络地址关联,文件和管道却不能l套接口具有很多能够通过ioctl进行查询和设置的选项l套接口必须在正确的状态下才能实现输入和输出,而已打开文件在任何时候都可以进行读或写操作。3、套接口和管道不同,它允许进行进行双向通信,

2、即可以使用同一个套接口描述符进行读和写【代码test1.2.c】。4、创建套接口#include#includeintsocketpair(intdomain,inttype,intprotocol,intsv[2]);domain:套接口的域名,表示使用哪个地址族,要么是AF_LOCAL要么是AF_UNIX。地址族的作用是指明使用哪一种地址类型。AF_LOCAL(AF_UNIX)表示使用本地地址规则来生成地址,而AF_INET则表示使用IP地址规则生成地址。type:套接口的类型,可选值为SOCK_STREAM、SO

3、CK_DGRAMprotocol:使用的协议。一般情况下为0,这样可以使用适合所选domain的正确缺省协议。sv:套接口文件描述符数组。每个整型值代表一个套接口,类似于管道中的某一端的端点。如果函数调用成功,返回0,否则返回-1,错误值存放在errno中。5、socketpair用例请参看【代码test1.1.c】6、可以对套接口调用read、write、close等函数,请参看【代码test1.2.c】7、使用close关闭端口,接收端会收到文件结束符标志,close是全关闭,也就是说关闭了套接口后,既不能读也不能写。shutdown半关闭,也就是说不能写,但是可以使

4、用该套接口从读取对端发送的数据。#includeintshutdown(ints,inthow);how有三个可选值:SHUT_RD、SHUT_WR、SHUT_RDWR如果函数调用成功,返回0,否则返回-1,错误值存放在errno中。仅对套接口的写端进行关闭,可以解决如下问题:l内核缓冲区中任何将要发送的数据都将作废l向远程套接口发送文件结束标志,告诉对方进程,不再会向对方发送数据l本地半关闭的套接口仍然可以进行读操作l不管套接口的访问记数为多少,shutdown都将访问数清0。如果使用dup或dup2复制了套接口描述符,则只有所有的描述符都被

5、close才能关闭套接口,而shutdown则能够一次性关闭复制的所有套接口。因此不论是要全关闭或半关闭套接口,都应该使用shutdown,而不是close。然而shutdown不会释放文件描述符,因此shutdown执行后,还应该调用close释放文件描述符。8、当调用fork生成子进程时,任何在fork操作之前存在的套接口都将复制到子进程中【代码test1.2.c】。9、关闭从套接口的读入将忽视任何等待读入的数据,如果有更多的数据从远程端发送过来,也将同样被忽视掉,如果这时进程尝试从套接口进行读入,就会发生错误。第二章域和地址族1、套接口不一定需要地址,比如函数soc

6、ketpair就生成了一对相互连接但是没有地址的套接口,这就是所谓的无名套接口。2、匿名调用:在相互连接的两个套接口中有一个套接口不需要地址,例如连接到一个远程套接口时,只要确定远程套接口的地址,但是发出调用的本地套接口可以是匿名的。此时本地套接口不需要bind3、socktpair和socket函数都允许使用其他协议,而不只是TCP/IP协议。4、intsocketpair(intdomain,inttype,intprotocol,intsv[2]);domain:套接口的域名,表示使用哪个地址族,要么是AF_LOCAL要么是AF_UNIX。地址族的作用是指明使用哪一

7、种地址类型。AF_LOCAL(AF_UNIX)表示使用本地地址规则来生成地址,而AF_INET则表示使用IP地址规则生成地址(IPv4等)一般情况下,protocol参数的值为0,这使操作系统可以选择适合所选domain的正确的缺省协议5、通用地址结构#includestructsocketaddr{sa_family_tsa_family;/*地址族类型*/charsa_data[14];/*地址数据*/}所有的地址都要在结构中同样的位置定义sa_family成员,因为它决定了怎样翻译结构中的包含

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。