




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
互联网络程序设计,第六讲 客户程序举例 电子科技大学计算机学院,互联网络程序设计,电子科大计算机学院,客户软件例子,通过举例子说明上章的概念、算法。 例子的特点: 服务本身所需要的代码很少,易理解 突出基本算法 说明客户/服务器如何使用系统调用 代码长短和服务数量的关系 模块化,过程化 隐藏细节:将复杂的程序分解成一组过程,模块化的程序 网络软件含有很多细节,隐藏细节减少出错机会 重用代码 将依赖操作系统的代码隔离,便于移植,互联网络程序设计,电子科大计算机学院,针对客户程序的过程库例子,每个客户与服务器建立联系必须: 选择协议(UDP或TCP) 查找服务器的机器名 查找所期望的服务并将其映射到协议端口号 分配套接字并与之连接 将这个过程设计为过程库的一部分,只需一次编码。 socket = connectTCP(machine, service); socket = connectUDP(machine, service); 正确抽象:高级操作,共享代码,减少出错,互联网络程序设计,电子科大计算机学院,实现connectTCP和connectUDP,将所有的底层操作放置到connectsock中 实现connectTCP和connectUDP成为简单调用,int connectTCP(const char *host, const char *service) /* Arguments host -name of host to which connection is desired service service associated with the desired port */ return connectsock(host, service, “tcp”); ,互联网络程序设计,电子科大计算机学院,实现connectTCP和connectUDP,int connectsock(const char *host, const char *service, const char *transport); int connectUDP(const char *host, const char *service) /* Arguments host -name of host to which connection is desired service service associated with the desired port */ return connectsock(host, service, “udp”); ,互联网络程序设计,电子科大计算机学院,构成连接的过程,connectsock:含有所有需要用来分配套接字和连接该套接字的代码,p58 #include 语句 宏定义和变量定义,函数声明,功能说明 函数名称和参数说明 局部变量定义 取得端口号,IP地址,和使用协议号 使用socket得到套接字 使用connect建立连接 返回套接字,互联网络程序设计,电子科大计算机学院,connectsock说明,复杂条件表达式:函数调用,赋值,比较在一行 memset和memcpy的使用特点 辅助的系统调用:gethostbyname, getprotobyname, getservbyname. errexit: 出错退出 int errexit (const char * format, ) va_list args; va_start(args, format); vfprintf(stderr, format, args); va_end(args); exit(1); ,互联网络程序设计,电子科大计算机学院,DAYTIME服务,允许用户获得当前的日期和时间 客户程序访问服务器获得信息 格式:weekday,month,day,year,time-timezone 例子:Thursday,February 22,1996 17:3743-PST 可以使用TCP也可以使用UDP实现,协议端口13,互联网络程序设计,电子科大计算机学院,DAYTIME服务 可以使用TCP也可以使用UDP实现,对于TCP版本 只要连接到来,服务器就构造包含当前日期时间的文本字符串发送,然后关闭连接。客户不用发送任何数据,发送了也会忽略。,对于UDP版本 服务器收到数据报,格式化当前的日期和时间将结果字符串放置到外发数据报中,发送给客户。激活这个响应的数据报会被丢失。,互联网络程序设计,电子科大计算机学院,针对DAYTIME的TCP客户实现,TCPdaytime.c 的实现说明。P61 #include语句 变量、恒量和函数定义 客户程序主函数main,含参数 int main(int argc, char *argv) 对参数的个数进行判断,根据参数数量的不同进行不同的参数处理 如果出错,提示使用方法,退出 调用TCPdaytime( )获得服务器服务 使用connectTCP得到套接字 循环等待服务器的响应,并送到标准文件显示,互联网络程序设计,电子科大计算机学院,从TCP连接中进行读,TCP提供流式服务,不保持记录边界 发送应用程序和接收应用程序分开了 发送2个64字节,可能接收1次或者3次完成 一次TCP连接的读操作调用返回的字节数依赖于下层互联网络数据报的大小,可用的缓存空间,以及穿越网络所遇到的时延。 必须要重复地调用recv(或者read),直到获得所有的数据 TCP的流服务不能保证按写入时相同的数据块交付数据,互联网络程序设计,电子科大计算机学院,TIME服务,允许一台机器从另外一台机器获得日期和时间。 由于存在不同的时区,所有的时间日期信息必须用国际标准时间:UCT或UT 服务器应答前将本地时间转化为标准时间 客户收到应答时,将国际标准时间转化为本地时间。 TIME协议规定由32bit的整数来表示 从1990年1月1日午夜为起点的秒数 用于一台计算机使用另外一系统时钟来设置起事件,互联网络程序设计,电子科大计算机学院,访问TIME服务,TIME服务使用端口37 可以使用TCP协议 使用TCP的TIME服务器利用连接的出现激活输出,类似DAYTIME服务。 使用TCP的客户不用发送任何数据 也可以使用UDP访问TIME服务 客户发出包含单个数据报的请求 服务器从传入的数据报中取出地址和端口号 服务器将当前时间编码为一个整数,使用上述地址和端口号发回给客户,互联网络程序设计,电子科大计算机学院,精确时间和网络时延,由于网络时延,客户收到的时间慢了 尽管有更加复杂的协议来处理时钟同步 TIME协议因为简单,在局域环境中,在某些环境下,还是使用很多。 改进TIME协议提高精确性 计算服务器到客户的网络时延近似值 客户计算从客户到服务器,再从服务器到客户的往返时延,取其一半作为时延的近似值。,互联网络程序设计,电子科大计算机学院,针对TIME服务的UDP客户,UDPtime.c 程序说明:p65 变量定义 程序参数处理 建立UDP套接字 发送一个数据报 读取数据报 字节顺序转换, 换算成unix的时间起点 调用ctime转换成为可以读出的时间格式,互联网络程序设计,电子科大计算机学院,ECHO服务,ECHO服务器返回从客户收到的所有数据 用户网络管理员测试可达性,调试协议软件,识别选路问题等 TCP ECHO服务:接收连接请求,从连接中读取数据,在该连接上将数据写回。直到客户终止传送。 UDP ECHO服务:接收整个数据报,根据数据报指明的端口号和地址,返回整个数据报,互联网络程序设计,电子科大计算机学院,针对ECHO的TCP客户,TCPecho.c p66 客户主函数:main( ) 处理传入参数 TCPecho( ) 打开连接以后,进入循环 读出每行输入 通过TCP连接发送给ECHO服务器 读取返回的数据并打印 读出过程是一个循环,按照字符数量计数 完成所有的行输入后,程序退出,互联网络程序设计,电子科大计算机学院,针对ECHO服务的UDP客户,UDPecho.c p67 同前面的TCP版本类似 读出返回数据的过程不同,只需要读出一次 UDP客户要么收到了由服务器返回
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (2025年标准)锅炉安装维修协议书
- (2025年标准)规划测量协议书
- (2025年标准)广州公司股权协议书
- (2025年标准)光缆施工协议书
- (2025年标准)管护责任协议书
- 智能仓储管理系统优化项目实施计划书
- (2025年标准)关于港口装卸协议书
- (2025年标准)挂靠开发协议书
- 教育行业校园安全管理方案
- 旅游景点开发与管理实战指南
- 2025新版企业员工劳动合同范本
- PCR实验室基因扩增检验人员培训试题及答案
- 2025年全国版图知识竞赛(中学组)历年参考题库含答案详解(5卷)
- 2025年西藏自治区三支一扶人员招募考试(公共基础知识)历年参考题库含答案详解(5卷)
- 2025年富县辅警考试题库(附答案)
- 2026届张家港市达标名校中考语文模试卷含解析
- 保密观试题含答案2025年
- 柏拉图教育思想体系解析
- 国家中医药管理局《中医药事业发展“十五五”规划》全文
- 碳九加氢标准工艺标准流程
- 公开课第一课素描基础入门课件
评论
0/150
提交评论