- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四讲 套接字API-z
分为短(short 16位)和长(long 32位)两种 htons:将一个短整数从本地字节顺序转换为网络字节顺序; ntohs:将一个短整数从网络字节顺序转换为本地字节顺序; htonl和ntohl: 类似如上 在使用little endian的系统中 这些函数会把字节序进行转换 在使用big endian类型的系统中 这些函数会定义成空宏同样 在网络程序开发时 或是跨平台开发时 也应该注意保证只用一种字节序 不然两方的解释不一样就会产生bug. 计算机通信与网络编程 电子科大计算机学院 UNIX系统提供了预定义的符号常量和数据结构来声明数据和指明参数: 使用何种服务: SOCK_DGRAM: 数据报服务,UDP协议 SOCK_STREAM: 流服务,TCP协议 PF_INET:使用TCP/IP协议族 AF_INET: 使用TCP/IP地址结构 需要include,引用出现这些定义的文本 #include sys/types.h #include sys/socket.h 计算机通信与网络编程 电子科大计算机学院 套接字已经成为一种事实上的标准 socket函数使用PF_INET说明使用TCP/IP 其它的系统调用的使用方法 bind, listen, connect, accept, read, write, close 协议族的地址表示方式 AF_INET指明含有一个IP地址和端口号的端点地址 TCP/IP是用于定义的结构sockaddr_in 一些预定义的结构和常量需要include引用 计算机通信与网络编程 电子科大计算机学院 1.什么是套接字? 2. PF_INET和AF_INET分别代表什么? 3.struct sockaddr和struct sockaddr_in有什么不同? 4.accept调用完成什么功能,返回什么? 5.系统调用Socket( int domain, int type, int protocol)中的type用来标识什么,可以有哪些值? 计算机通信与网络编程 电子科大计算机学院 * 电子科大计算机学院 电子科大计算机学院 电子科大计算机学院 电子科大计算机学院 电子科大计算机学院 电子科大计算机学院 电子科大计算机学院 《计算机网络编程》 第四讲 套接字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 来自UNIX系统 Berkeley套接字 ARPA要求伯克利分校将TCP/IP移植到UNIX中 需要创建一个接口,便于应用程序使用这个接口 进行网络通信 尽可能使用现有的系统调用,同时添加新的系统调用支持TCP/IP。 这个系统被称为BSD UNIX 套接字,成为事实上的标准 计算机通信与网络编程 电子科大计算机学院 考虑:接口是专门针对TCP/IP, 还是可以为其它协议所用呢? 方法一:定义专门支持TCP/IP通信的一些函数 方法二:定义支持一般网络通信的函数,用参数是TCP/IP通信作为一种特例 Berkeley套接字使用第二种办法,具有通用性,TCP/IP是一个族PF_INET 使用服务的类型,而不是指定协议名 争论: 通用性没有必要,使应用程序难以阅读 通用性可以使程序员免于了解协议族的细节 计算机通信与网络编程 电子科大计算机学院 文件描述符:进程描述符表的下标。OS中每个进程对应一个文件描述符表,表中每个元素指向和文件相对应的一个内部的数据结构。 套接字和文件类似,每个活动套接字使用一个小整数标识,进程的文件描述符和套接字描述符值不能相同 socket函数:创建套接字描述符(
文档评论(0)