- 1、本文档共29页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
?计算机网络编程?;套接字的概念
Berkeley套接字
套接字概要
套接字主要系统调用
用于整数转换的函数调用
在程序中使用套接字调用
套接字调用参数相关的符号常量
;计算机网络编程;来自UNIX系统
Berkeley套接字
ARPA要求伯克利分校将TCP/IP移植到UNIX中
需要创立一个接口,便于应用程序使用这个接口进行网络通信
尽可能使用现有的系统调用,同时添加新的系统调用支持TCP/IP。
这个系统被称为BSDUNIX(BerkeleySoftwareDistribution),成为事实上的标准
1981提出于BSD4.1UNIX,本书基于BSD4.4版本
;考虑:接口是专门针对TCP/IP协议,还是可以为其它协议所用呢?
方法一:定义专门支持TCP/IP通信的一些函数
方法二:定义支持一般网络通信的函数,用参数使TCP/IP通信作为一种特例
Berkeley套接字使用第二种方法,具有通用性,TCP/IP是一个族PF_INET
另外,应用程序知名使用效劳的类型,而不是指定协议名
争论:
通用性没有必要,使应用程序难以阅读
通用性可以使程序员免于了解协议族的细节;文件描述符:进程的文件描述符表的下标。OS中每个进程对应一个文件描述符表,表中每个元素指向和文件相对应的一个内部的数据结构。
套接字和文件类似,每个活动套接字使用一个小整数标识,进程的文件描述符和套接字描述符值不能相同
socket函数:创立套接字,返回描述符〔不是open函数〕;调用socket将创立一个新的描述符条目
结构的许多字段是其他的系统调用来填;创立方式相同,使用方式不同
等待传入连接的套接字——被动,如效劳器套接字
发起连接的套接字——主动,如客户套接字
指明端点地址:创立时不指定,使用时指明
TCP/IP需要指明协议端口号和IP地址
TCP/IP协议族和地址族的对应:
TCP/IP协议族:PF_INET
对应的TCP/IP的地址族:AF_INET;套接字系统定义的一般化的地址结构
〔地址族,该族的端点地址〕;套接字调用分为两组:
主调用:提供下层功能的访问
实用例程:提供帮助
套接字调用带有参数,允许以多种方式来使用它们。
可被客户或效劳器使用
可被TCP或UDP使用
可使用特定或非特定的远程端点地址;intSocket(intdomain,inttype,intprotocol)
功能:创立一个新的套接字,???回套接字描述符
参数说明:
domain:域类型,指明使用的协议栈,如TCP/IP使用的是PF_INET
type:指明需要的效劳类型,如
SOCK_DGRAM:数据报效劳,UDP协议
SOCK_STREAM:流效劳,TCP协议
protocol:一般都取0〔由系统根据效劳类型选择默认的协议〕
请创立一个用于TCP通信的套接字。
举例:s=socket(PF_INET,SOCK_STREAM,0);功能:为套接字指明一个本地端点地址
TCP/IP协议使用sockaddr_in结构,包含IP地址和端口号
效劳器使用它来指明熟知的端口号,然后等待连接
参数说明:
Sockfd:套接字描述符,指明创立连接的套接字
my_addr:本地地址,IP地址和端口号
addrlen:地址长度
举例:bind(sockfd,(structsockaddr*)address,sizeof(address));;功能:
面向连接的套接字使用它将一个套接字置为被动模
式,并准备接收传入连接。用于效劳器,指明某个
套接字连接是被动的
参数说明:
Sockfd:套接字描述符,指明创立连接的套接字
input_queue_size:该套接字使用的队列长度,指定在请求队列中允许的最大请求数
请将套接字设为被动模式,并允许最大请求数为20。
举例:listen(sockfd,20);功能:获取传入连接请求,返回新的连接的套接字描述符。
为每个新的连接请求创立了一个新的套接字,效劳器只对新的连接使用该套接字,原来的监听套接字接收其他的连接请求。
新的连接上传输数据使用新的套接字,使用完毕,效劳器将关闭这个套接字。
参数说明:
Sockfd:套接字描述符,指明正在监听的套接字
addr:提出连接请求的主机地址
addrlen:地址长度
举例:new_sockfd=accept(sockfd,(structsockaddr*)address,sizeof(address));;功能:同远程效劳器建立主动连接,成功时返回0,假设连接失败返回-1。
参数说明:
Sockfd:套接字描述符,指明创立连接的套接字
Server_addr:指明远程端点:IP地址和端口号
sockaddr_len:
您可能关注的文档
最近下载
- 冠状动脉介入治疗考试试题及答案.docx
- GZ036 区块链技术应用赛项赛题-2023年全国职业院校技能大赛拟设赛项赛题完整版(10套).docx
- 8.网络新世界(教学设计)-四年级道德与法治上册(部编版).docx
- 现代遗传学(厦大)中国大学MOOC慕课 章节测验期中期末考试答案.docx
- 心肺运动试验的临床研究及应用PPT课件.ppt
- 谷胱甘肽还原酶(GR)及其临床意义.pdf VIP
- 系统硬件集成及软硬件联合调试方案.docx VIP
- 部编版语文四年级上册 第五六单元测试卷(含答案).pdf
- 高中化学《信息技术与学科整合的教学设计》《苯芳香烃》.pdf VIP
- 直播销售 项目7 直播话术设计.pdf
文档评论(0)