4套接字API讲解.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4套接字API讲解

* * * * * * * * * * * * * * * * * * * * * * * * * * 《计算机通信与网络编程》 第四讲 套接字API 电子科技大学计算机学院 目录 套接字API介绍 套接字API中的主要系统调用 在程序中使用套接字调用 什么是套接字 TCP/IP协议存在于OS中,网络服务通过OS提供 在OS中增加支持TCP/IP的系统调用——Berkeley套接字 如Socket,Connect,Send,Recv等 1981提出于BSD4.1 UNIX,本书基于BSD4.4 版本 什么是套接字 1. 套接字是一个主机本地应用程序所创建的, 为操作系统所控制的接口 (“门”) . 2. 应用进程通过这个接口,使用传输层提供的服务, 跨网络发送(/接收)消息到(/从)其他应用进程。 3.Client/server模式的通信接口——套接字接口. socket process TCP with buffers, variables socket 由应用程序 开发者控制 由操作系统控制 host or server process TCP with buffers, variables socket controlled by application developer controlled by operating system host or server internet 套接字API 来自UNIX系统 Berkeley套接字 ARPA要求伯克利分校将TCP/IP移植到UNIX中 需要创建一个接口,便于应用程序使用这个接口进行网络通信 尽可能使用现有的系统调用,称为BSD UNIX 套接字 成为事实上的标准 套接字:描述符 OS将文件描述符实现为一个指针数组,指向一个内部的数据结构:进程描述符表的下标 套接字和文件类似,每个活动套接字使用一个小整数标识,进程的文件描述符和套接字描述符值不能相同 socket函数:创建套接字描述符(不是open函数) 0: 1: 2: 3: 描述符表 (一个进程一张) 用于文件0的内部数据结构 用于文件1的内部数据结构 用于文件2的内部数据结构 用于文件3的内部数据结构 指明一个协议接口 考虑:接口是专门针对TCP/IP, 还是可以为其它协议所用呢? 方法一:定义专门支持TCP/IP通信的一些函数 方法二:定义支持一般网络通信的函数,用参数是TCP/IP通信作为一种特例 Berkeley套接字使用第二种办法,具有通用性,TCP/IP是一个族PF_INET 使用服务的类型,而不是指定协议名 争论: 通用性没有必要,使应用程序难以阅读 通用性可以使程序员免于了解协议族的细节 针对套接字的系统数据结构 调用socket将创建一个新的描述符条目和新的数据结构 结构的许多字段是其他的系统调用来填 0: 1: 2: 3: 4: 描述符表 (一个进程一张) family: PF_INET service: SOCK_STREAM Local IP: Remote IP: Local port: Remote port: : 套接字的数据结构 主动套接字和被动套接字 创建方式相同,使用方式不同 等待传入连接的套接字——被动,如服务器套接字 发起连接的套接字——主动,如客户套接字 指明端点地址:创建时不指定,使用时指明 TCP/IP需要指明协议端口号和IP地址 TCP/IP协议族:PF_INET TCP/IP的地址族:AF_INET 注意:具有相同的数字值,防止误用 类属地址结构 套接字系统定义的一般化的地址结构 (地址族,该族的端点地址) 套接字的普通C定义结构 struct sockaddr { u_char sa_len; u_short sa_family; char sa_data[14]; }只是很适用于AF_INET族中的地址 TCP/IP的地址定义 struct sockaddr_in { u_char sin_len; u_short sin_family;u_short sin_port; struct in_addr in_addr; char sin_zero[8]; } 类属地址结构 in_addr结构的定义 struct in_addr { u_long s_addr; } 套接字API的主要系统调用 套接字调用分为两组: 主调用:提供下层功能的访问 实用例程:提供帮助 套接字带有参数,允许以多种方式来使用它们。 一些主调用的套接字API int Socket( int domain, int type, int protocol) 功能:创建一个新的套接字,返回套接字描述符 参数说明: domain:域类型,指明使用的

文档评论(0)

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

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

1亿VIP精品文档

相关文档