计算机网络编程第五讲客户软件设计中的算法和问题ppt课件

上传人:无*** 文档编号:152529981 上传时间:2022-09-15 格式:PPT 页数:23 大小:1.14MB
收藏 版权申诉 举报 下载
计算机网络编程第五讲客户软件设计中的算法和问题ppt课件_第1页
第1页 / 共23页
计算机网络编程第五讲客户软件设计中的算法和问题ppt课件_第2页
第2页 / 共23页
计算机网络编程第五讲客户软件设计中的算法和问题ppt课件_第3页
第3页 / 共23页
资源描述:

《计算机网络编程第五讲客户软件设计中的算法和问题ppt课件》由会员分享,可在线阅读,更多相关《计算机网络编程第五讲客户软件设计中的算法和问题ppt课件(23页珍藏版)》请在装配图网上搜索。

1、第五讲第五讲 客户软件设计中的算法和问题客户软件设计中的算法和问题 运用程序如何发起通讯成为客户 运用程序如何运用TCP或UDP与效力器联络 运用程序如何运用套接字调用与协议交互运用程序必需指明的细节运用程序必需指明的细节客户还是效力器客户还是效力器端点地址端点地址运用面向衔接的还是无衔接的运用面向衔接的还是无衔接的如何执行授权和防护准那么如何执行授权和防护准那么所需求的缓存的大小等所需求的缓存的大小等只需求概念性地了解套接字只需求概念性地了解套接字APIAPI需求详细了解构造通讯程序的各种方法,便于迅速需求详细了解构造通讯程序的各种方法,便于迅速作出设计决策。作出设计决策。客户运用程序比较简

2、单:客户运用程序比较简单:不用明显地处置并发性不用明显地处置并发性不需求特权,和常规的运用程序一样执行不需求特权,和常规的运用程序一样执行不需求强行维护,依赖操作系统自动强迫不需求强行维护,依赖操作系统自动强迫执行维护执行维护在编译程序时,将效力器的域名或者在编译程序时,将效力器的域名或者IPIP地址阐明为地址阐明为常量常量执行快,但是效力器挪动后不便执行快,但是效力器挪动后不便要求用户在启动程序时标定效力器要求用户在启动程序时标定效力器运用机器名,不用重新编译客户程序运用机器名,不用重新编译客户程序从稳定的存储设备中获得关于效力器的信息从稳定的存储设备中获得关于效力器的信息假设文件不存在,客

3、户软件就不能执行假设文件不存在,客户软件就不能执行运用某个单独的协议来找到效力器运用某个单独的协议来找到效力器(如广播或组播如广播或组播)只能在本地小环境下运用只能在本地小环境下运用实践:用户在调用客户软件时指明效力器地址实践:用户在调用客户软件时指明效力器地址 根据实践情况,综合标识效力器地址根据实践情况,综合标识效力器地址客户程序调用时常指明参数,客户运用参数语法客户程序调用时常指明参数,客户运用参数语法:域名方式或域名方式或IPIP地址方式地址方式域名和域名和IPIP地址确实定:扫描参数,看能否含有字地址确实定:扫描参数,看能否含有字母。母。全参数化的客户软件允许用户指明协议端口号和全参

4、数化的客户软件允许用户指明协议端口号和机器机器运用两个参数:运用两个参数:mail.uestc.edu smtpmail.uestc.edu smtp运用单个参数:运用单个参数:mail.uestc.edu:smtpmail.uestc.edu:smtp遵照本地系统的商定:遵照本地系统的商定:linuxlinux运用单独参数指明运用单独参数指明效力器的机器地址和协议端口效力器的机器地址和协议端口运用运用sockaddr_insockaddr_in构造指明效力器的地址构造指明效力器的地址需求二进制表示的需求二进制表示的32bit IP32bit IP地址地址套接字对地址转换的支持两个库例程套接字

5、对地址转换的支持两个库例程inet_addr:IPinet_addr:IP地址点分十进制的字符串到二进制地址点分十进制的字符串到二进制的转换的转换接受一个点分十进制表示的字符串的地址,前往一接受一个点分十进制表示的字符串的地址,前往一个等价的二进制的地址个等价的二进制的地址gethostbyname:gethostbyname:主机域名到二进制的转换主机域名到二进制的转换接受一个机器域名字符串,前往一个接受一个机器域名字符串,前往一个hostenthostent构造,构造,内含一个二进制表示的主机内含一个二进制表示的主机IPIP地址地址struct sockaddr_in sock;struc

6、t sockaddr_in sock;sock.sin_addr.s_addr=inet_addr(“192.168.0.1sock.sin_addr.s_addr=inet_addr(“192.168.0.1);/);/接受一个点分十进制表示的字符串的地址,前接受一个点分十进制表示的字符串的地址,前往一个等价的二进制的地址往一个等价的二进制的地址 TCP/IP的地址定义的地址定义struct sockaddr_in u_char sin_len;u_short sin_family;u_short sin_port;/2Bstruct in_addr sin_addr;/4Bchar sin

7、_zero8;/8B IP公用的构造公用的构造hostent在文件在文件netdb.h的定义的定义struct hostent char*h_name;char *h_aliases;inth_addrtype;inth_length;char*h_addr_list;#define h_addr h_addr_list0h_addr指向主机地址表第一个指向主机地址表第一个位置位置getservbyname:getservbyname:两个参数指明期望的效力和协两个参数指明期望的效力和协议。前往议。前往serventservent类型的构造指针;类型的构造指针;留意网络字节顺序和本地机器的表示

8、方法;留意网络字节顺序和本地机器的表示方法;struct serventchar *s_name;char *s_aliases;int s_port;char *s_proto;struct servent*sptr;if(sptr=getservbyname(“smtp,“tcp)/*port number is now in sptr-s_port*/else /*error occurred-handle it*/getprotobyname:getprotobyname:由协议名前往协议号;前往一由协议名前往协议号;前往一个个protoentprotoent类型构造的地址类型构造的地

9、址struct protoentchar *p_name;char *p_aliases;int p_proto;struct protoent*pptr;if(pptr=getprotobyname(“udp)/*official protocol number is now in pptr-p_proto*/else /*error occurred-handle it*/找到期望与之通讯的效力器找到期望与之通讯的效力器IPIP地址和协议端口号地址和协议端口号分配套接字分配套接字指明此衔接需求在本地机器中的、恣意的、未运用指明此衔接需求在本地机器中的、恣意的、未运用的协议端口,并允许的协议

10、端口,并允许TCPTCP选择一个这样的端口选择一个这样的端口将这个套接字衔接到效力器将这个套接字衔接到效力器运用运用级协议与效力器通讯运用运用级协议与效力器通讯封锁衔接封锁衔接运用运用socketsocket函数函数将协议和效力分别阐明为将协议和效力分别阐明为PF_INETPF_INET和和SOCK_STREAMSOCK_STREAMincludeinclude语句包含一些定义常量的文件语句包含一些定义常量的文件对于对于TCP/IPTCP/IP,第三个参数没有用。,第三个参数没有用。#include#include int s;/*socket descriptor*/s=socket(PF_

11、INET,SOCK_STREAM,0);效力器运转于熟知的端口上,客户不是。效力器运转于熟知的端口上,客户不是。客户运用端口的规那么:客户运用端口的规那么:该端口不与该机器其他进程运用端口冲突该端口不与该机器其他进程运用端口冲突该端口没有被分配给某个熟知效力该端口没有被分配给某个熟知效力客户允许客户允许TCPTCP自动选择本地端口自动选择本地端口connectconnect调用的一个效果就是所选择的本地调用的一个效果就是所选择的本地端口可以满足上述准那么。端口可以满足上述准那么。对于只挂在一个网络上的主机是简单的对于只挂在一个网络上的主机是简单的正确的选择依赖于选路信息,但运用程序很少运用正确

12、的选择依赖于选路信息,但运用程序很少运用选路信息,实践中存在的问题:选路信息,实践中存在的问题:一个主机能够具有多个一个主机能够具有多个IPIP地址地址假设运用程序随机选择一个假设运用程序随机选择一个IPIP地址,能够选择了一地址,能够选择了一个与个与IPIP地址的接口并不匹配的地址。地址的接口并不匹配的地址。能够可以正确的任务。但是网络管理睬困难和混乱,能够可以正确的任务。但是网络管理睬困难和混乱,可靠性降低。可靠性降低。普通本地地址字段不填,允许普通本地地址字段不填,允许TCP/IPTCP/IP自动选取本地自动选取本地IPIP地址地址connectconnect函数:允许函数:允许TCPT

13、CP套接字发起衔接套接字发起衔接强迫执行下层的三次握手强迫执行下层的三次握手超时或者建立衔接后前往超时或者建立衔接后前往三个参数:三个参数:retcode=connect(s,remaddr,remaddrlen);retcode=connect(s,remaddr,remaddrlen);s:s:套接字的描画符套接字的描画符remaddr:remaddr:一个一个sockaddr_insockaddr_in类型构造的地址类型构造的地址remaddrlen:remaddrlen:第二个参数的长度第二个参数的长度connectconnect的四项义务的四项义务对指明的套接字进展检测:有效,还没有

14、衔接对指明的套接字进展检测:有效,还没有衔接将第二个参数给出的端点地址填入套接字中将第二个参数给出的端点地址填入套接字中为此套接字选择一个本地端点地址为此套接字选择一个本地端点地址发起一个发起一个TCPTCP衔接,并前往一个值衔接,并前往一个值客户发送恳求,等待呼应客户发送恳求,等待呼应发送恳求:发送恳求:send;send;等待呼应:等待呼应:recv;recv;send(s,req,strlen(req),0);send(s,req,strlen(req),0);while(n=recv(s,bptr,buflen,0)0)while(n=recv(s,bptr,buflen,0)0)bp

15、tr+=n;bptr+=n;buflen-=nbuflen-=n;TCPTCP不坚持记录的边境,面向流的概念,多次接纳。不坚持记录的边境,面向流的概念,多次接纳。缘由:大块数据被分片封装发送缘由:大块数据被分片封装发送 或由于接纳方接纳缓冲小而数据被发方分次发送或由于接纳方接纳缓冲小而数据被发方分次发送closeclose:从容封锁衔接释放该套接字:从容封锁衔接释放该套接字经常需求在客户效力器之间协调封锁事宜经常需求在客户效力器之间协调封锁事宜效力器不能封锁衔接,不知客户恳求能否完成效力器不能封锁衔接,不知客户恳求能否完成客户不知道效力器发出的数据能否全部到达客户不知道效力器发出的数据能否全部

16、到达允许运用程序在一个方向封锁允许运用程序在一个方向封锁TCPTCP衔接衔接shutdown(s,direction);shutdown(s,direction);direction:0direction:0不允许输入不允许输入;1;1不允许输出不允许输出;2;2双向封锁双向封锁部分封锁可以让效力器发送完最后一个呼应后,封部分封锁可以让效力器发送完最后一个呼应后,封锁衔接。锁衔接。找到期望与之通讯的效力器找到期望与之通讯的效力器IPIP地址和协议端口号地址和协议端口号分配套接字分配套接字指明这种通讯需求本地机器中的、恣意的、未运用指明这种通讯需求本地机器中的、恣意的、未运用的协议端口,并允许的

17、协议端口,并允许UDPUDP选择一个这样的端口选择一个这样的端口指明报文所要发往的效力器指明报文所要发往的效力器运用运用级协议与效力器通讯运用运用级协议与效力器通讯封锁衔接封锁衔接衔接的衔接的UDPUDP通讯通讯 客户运用客户运用connectconnect调用指明远程端点地址调用指明远程端点地址运用运用SOCK_DGRAMSOCK_DGRAM类型的套接字类型的套接字不发起任何分组交换,不检查远程端点合法性不发起任何分组交换,不检查远程端点合法性只是在套接字的数据构造记录远程端点的信息只是在套接字的数据构造记录远程端点的信息不用反复指明远端地址收发报文不用反复指明远端地址收发报文只和一个效力器

18、交互比较方便只和一个效力器交互比较方便非衔接的非衔接的UDPUDP通讯通讯在每次发送报文的时候指明远程目的地在每次发送报文的时候指明远程目的地运用灵敏,便于同不同的效力器通讯运用灵敏,便于同不同的效力器通讯对于衔接的对于衔接的UDPUDP套接字套接字运用运用sendsend发送报文发送报文运用运用recvrecv接纳报文接纳报文每次每次sendsend发送一个完好的报文发送一个完好的报文每次每次recvrecv接受一个完好的报文,足够大缓存接受一个完好的报文,足够大缓存不需求反复运用不需求反复运用recvrecv获得单个报文获得单个报文对于非衔接的对于非衔接的UDPUDP套接字套接字sendt

19、o:sendto:发送报文,含有地址信息发送报文,含有地址信息 recvfrom:recvfrom:接纳一个含有源地址的数据报接纳一个含有源地址的数据报close:close:封锁套接字,释放与之关联的资源封锁套接字,释放与之关联的资源回绝以后到达的报文回绝以后到达的报文没有通知远程端点没有通知远程端点shutdown:shutdown:在某个方向上终止进一步传输在某个方向上终止进一步传输不向另外一方发送任何通知报文,只是在本地套接不向另外一方发送任何通知报文,只是在本地套接字标明不期望在指定的方向传输数据字标明不期望在指定的方向传输数据客户封锁输出以后,效力器并不知道客户封锁输出以后,效力器

20、并不知道UDPUDP提供的是不可靠的交互提供的是不可靠的交互必需本人设计协议实现可靠性必需本人设计协议实现可靠性1.1.客户标识效力器位置的几种方式?客户标识效力器位置的几种方式?2.inet_addr,gethostbyname,getservbyname,g2.inet_addr,gethostbyname,getservbyname,getprotobyname etprotobyname 分别完成什么功能?分别完成什么功能?3.3.描画描画TCPTCP客户算法。客户算法。4.4.为什么为什么TCPTCP调用调用recvrecv接纳数据时要进展多次接纳?接纳数据时要进展多次接纳?5.close5.close和和shutdownshutdown有什么区别?有什么区别?6.6.衔接和非衔接的衔接和非衔接的UDPUDP通讯有什么区别?通讯有什么区别?

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!