欢迎来到天天文库
浏览记录
ID:43520597
大小:3.13 MB
页数:29页
时间:2019-10-09
《计算机网络编程第四讲套接字API》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《计算机网络编程》第四讲套接字API套接字的概念Berkeley套接字套接字概要套接字主要系统调用用于整数转换的函数调用在程序中使用套接字调用套接字调用参数相关的符号常量目录计算机网络编程电子科大计算机学院计算机网络编程电子科大计算机学院什么是套接字1.套接字是一个主机本地应用程序所创建的,为操作系统所控制的接口(“门”).2.应用进程通过这个接口,使用传输层提供的服务,跨网络发送(或接收)消息.3.Client/server模式的通信接口——套接字接口.socketprocessTCPwithbuffers,variab
2、lessocket由应用程序开发者控制由操作系统控制hostorserverprocessTCPwithbuffers,variablessocketcontrolledbyapplicationdevelopercontrolledbyoperatingsystemhostorserverinternet来自UNIX系统Berkeley套接字ARPA要求伯克利分校将TCP/IP移植到UNIX中需要创建一个接口,便于应用程序使用这个接口进行网络通信尽可能使用现有的系统调用,同时添加新的系统调用支持TCP/IP。这个系统被称
3、为BSDUNIX(BerkeleySoftwareDistribution),成为事实上的标准1981提出于BSD4.1UNIX,本书基于BSD4.4版本计算机网络编程电子科大计算机学院Berkeley套接字考虑:接口是专门针对TCP/IP协议,还是可以为其它协议所用呢?方法一:定义专门支持TCP/IP通信的一些函数方法二:定义支持一般网络通信的函数,用参数使TCP/IP通信作为一种特例Berkeley套接字使用第二种办法,具有通用性,TCP/IP是一个族PF_INET另外,应用程序知名使用服务的类型,而不是指定协议名争论
4、:通用性没有必要,使应用程序难以阅读通用性可以使程序员免于了解协议族的细节计算机网络编程电子科大计算机学院指明一个协议接口文件描述符:进程的文件描述符表的下标。OS中每个进程对应一个文件描述符表,表中每个元素指向和文件相对应的一个内部的数据结构。套接字和文件类似,每个活动套接字使用一个小整数标识,进程的文件描述符和套接字描述符值不能相同socket函数:创建套接字,返回描述符(不是open函数)计算机网络编程电子科大计算机学院套接字概要——套接字描述符0:1:2:3:进程的文件描述符表(一个进程一张)用于文件0的内部数据结
5、构用于文件1的内部数据结构用于文件2的内部数据结构用于文件3的内部数据结构调用socket将创建一个新的描述符条目结构的许多字段是其他的系统调用来填计算机网络编程电子科大计算机学院套接字概要——针对套接字的数据结构0:1:2:3:4:描述符表(一个进程一张)family:PF_INETservice:SOCK_STREAMLocalIP:RemoteIP:Localport:Remoteport::创建方式相同,使用方式不同等待传入连接的套接字——被动,如服务器套接字发起连接的套接字——主动,如客户套接字指明端点地址:创建
6、时不指定,使用时指明TCP/IP需要指明协议端口号和IP地址TCP/IP协议族和地址族的对应:TCP/IP协议族:PF_INET对应的TCP/IP的地址族:AF_INET计算机网络编程电子科大计算机学院套接字概要——主动套接字和被动套接字套接字系统定义的一般化的地址结构(地址族,该族的端点地址)计算机网络编程电子科大计算机学院类属地址结构套接字的普通C定义结构structsockaddr{u_charsa_len;u_shortsa_family;charsa_data[14];//14B}通用的地址结构(只是很适用于AF
7、_INET族中的地址)TCP/IP的地址定义structsockaddr_in{u_charsin_len;u_shortsin_family;u_shortsin_port;//2Bstructin_addrsin_addr;//4Bcharsin_zero[8];//8B}IP专用的结构套接字调用分为两组:主调用:提供下层功能的访问实用例程:提供帮助套接字调用带有参数,允许以多种方式来使用它们。可被客户或服务器使用可被TCP或UDP使用可使用特定或非特定的远程端点地址计算机网络编程电子科大计算机学院套接字API的主要系
8、统调用intSocket(intdomain,inttype,intprotocol)功能:创建一个新的套接字,返回套接字描述符参数说明:domain:域类型,指明使用的协议栈,如TCP/IP使用的是PF_INETtype:指明需要的服务类型,如SOCK_DGRAM:数据报服务,UDP协议SOCK_ST
此文档下载收益归作者所有