《计算机通讯与网络》实验讲义(6)
将网络通信看成网络I/0操作要比文件I/0考虑更多的问题,其实质是网络上进程通信首先应在进程伺建立一种联系。联系可以是面向连接的,也可以是非连接的,而建立进程间的联系与取得文件描述符在过程和操作上都有着很大的差异。
网络I/O中描述符必须与通信信道另一端进程地址相联系,屏蔽掉差异意味着描述符与进程地址的联系过程完全由核心负责,而不是由用户来负责(文件系统中由描述符寻找打开文件i节点的过程由核心完成)。由于网络连接需要指定多个参数。不同的协议,这些参数的个数和每个参数的语义都是不同的,此外,网络连接的建立也需有多次“握手”(常把client方发一个请求或者server方发一个应答,叫握手)。若将这些过程全部包容在一个系统调用(例如,Socket())中,是完全不可取的。
为此,Socket的实现提供了多个由应用程序维护的系统调用,来建立进程间的网络连接。
另外,Socket描述符与进程地址的联系也由应用程序使用系统调用来显式地维护。Socket机制虽然没有实现完全的文件操作语义,但其操作方式还是与文件操作有着许多对应,例如,Socket()调用可近似地看成是open()调用,Socket中也使用了read和write调用,而其语法和语义与文件的read和write已调用几乎完全一致。
Socket中的调用bind, connect, listen和accept显示了建立网络连接的方法,Socket进程通信仍使用client _ server模型,建立连按时client和server所做的工作是不对称
- 17 -
的。在使用基于Socket的系统调用实现进程通信的主要有两类:一类是面向连接的进程通信,另一类是非连接的进程通信,且注意到两者使用的系统调用有所不同。
常用的Socket基本调用有: 1.Socket建立调用:
sockfd=Socket(family,type,protocol) int sockfd;
int family,type;… int protocol;
参数family指出了Socket所处的通信域。前文已讲过目前支持三种通信域。表1显示了family所使用的值、相应的通信域以及相关支持协议。
表1 Family值 AF_UNIX AF_INET AF-NS 通信域 UNIX域 互联网域 xerox域 支持协议 UNIX通信协议 TCP/IP XNS 参数type是Socket的类型,指明了通信两端的进程以何种方式进行通信。目前Socket支持下列的通信方式,如表2所列
表2 Socket类型 type值 sock_STREAM sock_DGRAM sock一SEQPACKET sock_RAM 类型 流式 数据报式 顺序信息报式 原始式 描述 直接访问下层通信协议 可靠顺序的且保持界标的数据传送 无连接通信,数据传送是不可靠的、无序的 面向连接的通信,可进行可靠、顺序的数据传送
2. bind调用:
int bind(sockf d myaddr addrlen) int sockf d;
struct sockaddr,myaddr; int addrlent;
bind一调用把一个名字与Socket描述符联系起来,也就是给一个Socket赋一个名字。UNIX域中进程的地址是按文件的路径名来查找,而互连网域中进程的地址就不同了。使用bind则是为互连网域的本地进程赋予它的地址,并把该地址与进程的Socket描述符相联系起来。
参数sockf d是调用socket o)的返回值,亦即Socket描述符;参数myaddr是名字(UNIX域)或者地址(互连网域)addrlen参数是myaddr的长度。
3.connect()调用:
int connect(sockf d,servaddr,addrlen) int sockf d;
struct sockaddr,servaddr; int addrlen;
在面向连接的通信中,client方进程通过调用connect()来启动一个连接;而非连接的通信中,调用connect()则有不同的含义,此时connect调用是通知UNIX的核心,随
- 18 -
相关推荐:
- [基础教育]2016-2022年中国钢芯铝绞线市场现状调
- [基础教育]语文部编版初一语文下册练习题 句式变
- [基础教育]南京继续教育参考答案--深入学习贯彻习
- [基础教育]国旗下讲话稿——珍惜时间好读书
- [基础教育]北师大版六年级数学下册圆锥的体积教学
- [基础教育]人教版-音乐-四年级下册-四年级下册音
- [基础教育]乔布斯2019年斯坦福大学毕业典礼致辞.d
- [基础教育]2015年加油站安全知识竞赛试题及答案
- [基础教育]2020年教师年度考核个人工作总结
- [基础教育]2019年中考历史试题-2019年大庆市初中
- [基础教育]初三仁爱英语第一轮总复习教案
- [基础教育]SG-A094电气配管安装工程隐蔽验收记录
- [基础教育]冀教版小学数学三年级下册第六单元教材
- [基础教育]青岛版(五制)小学科学二年级下册16《制
- [基础教育]2018-2019年初中科学初一中考真卷测试
- [基础教育]幼儿园大班期末简短评语精选
- [基础教育]2018云南临沧公务员考试申论技巧:这样
- [基础教育]学校食堂经营管理方案
- [基础教育]新中国砥砺奋进的七十年原文
- [基础教育]真空泵的选型及常用计算公式
- 高职田径课程教学现状与对策
- 全髋关节置换术在老年股骨颈骨折患者中
- 青人社厅函〔2016〕576号(附件)工资
- cp101-07砂子检验作业指导书 - secret
- 微观经济学 第八章 博弈论 习题
- 2014高考真题(词语运用)汇编及答案
- 2018年人教版七年级语文下册《第三单元
- 苏教版数学四年级上册第一单元试题 - M
- 四川大学新闻与传播考研2000-2010年真
- 浙江万里学院英语专业四年制本科教学计
- 最新2018马年事业祝福语-范文word版(2
- 最全模具行业术语英文翻译
- 皮亚杰的发展心理学理论
- 64篇高考情景式默写 练习题及答案
- 仿写(学生稿)
- 《SQL Server数据库技术》试卷A
- 第七章作业答案
- 江苏省赣榆县海头高级中学高中语文必修
- 浙江省2001年10月自考正常人体解剖学答
- 2012英语重点短语




