教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 基础教育 >

《计算机通讯与网络》实验讲义(6)

来源:网络收集 时间:2026-08-09
导读: 将网络通信看成网络I/0操作要比文件I/0考虑更多的问题,其实质是网络上进程通信首先应在进程伺建立一种联系。联系可以是面向连接的,也可以是非连接的,而建立进程间的联系与取得文件描述符在过程和操作上都有着很

将网络通信看成网络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 -

《计算机通讯与网络》实验讲义(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/564044.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)