计算机网络编程 第四讲 套接字API.ppt

计算机网络编程 第四讲 套接字API.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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:

文档评论(0)

mend45 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档