30-客户与服务器举例.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
30-客户与服务器举例,客户端与服务器交互,客户端与服务器通信,java客户端与服务器,服务器与客户端,易语言客户与服务器,服务器与客户端的区别,客户端与服务器不同步,易语言客户端与服务器,客户端与服务器不匹配

30.1 概述 本章将考察客户与服务器利用套接字进行通信的过程,并继续扩展对套接字的阐述。 它将揭示这里的套接字编程与第3章中使用API编程的差别。 同时,这个编程能让读者比较一下客户程序和服务器程序的不同。 30.2 面向连结型通信 客户与服务器必须选择一种支持无连接服务和支持面向连结服务的传输协议。 无连接服务在传输进行前不必有同意接收报文的承诺。 面向连结的服务则要求两个应用程序在数据传输之前要建立传输连结。 30.3 一个服务例子 服务器对访问该服务的客户数进行计数,并在每次客户与服务器建立连结时报告这个计数值。 该例采用面向连结型的交互过程。 30.4 例程中的命令行参数 这个例程的运行环境为MS DOS。 实例中的客户程序有两个命令行参数: 一个是要与服务器通信的这台主机名; 另一个是所使用的协议端口。 这两个参数是可选的: 可以指定,如5193 ,my_computer; 默认端口和本地主机名localhost 问题:为什么端口选用5193? IANA端口的分类 Internet Assigned Numbers Authority 熟知端口:0~1023 由IANA指定了服务 注册端口:1024~49151 由IANA注册作为通信方便的应用 动态/私有端口:49152~65535 可以自由定义和使用 BSD端口的分类 30.5 套接字过程调用的顺序 30.6 客户例程源代码 在本地机器上运行和调试例程代码 在网络上运行和调试例程代码 注意:修改以下部分 在Project?Settings的Link中添加:wsock32.lib 或者 ws2_32.lib main函数的参数形式 write函数需要加入#includeio.h 在DOS环境下运行:运行?cmd 30.7 服务器例程源代码 在本地机器上运行和调试例程代码 在网络上运行和调试例程代码 注意:修改部分同前。 如若使用UDP协议,主机一定要用IP地址来表示,或者通过函数来获得主机的IP地址。 如若将程序中的固定传递信息改为从键盘输入,就可进行聊天。 30.8 流服务与多次recv调用 服务器只调用一次send来传输数据: TCP协议将要传输的数据分成若干个报文放在TCP段中,然后再封装在IP数据报中发送 recv反复被调用来接收服务器发送来的数据,直到获得一个文件结束条件(计数为0)才停止。 流服务体现在面向连结的通信过程: p252中,TCP段格式中的数据“序号” 30.9 套接字过程与阻塞 同大多数I/O调用一样,当程序调用一个套接字过程时,程序先被挂起直至过程完成。挂起的时间没有限制。 服务器在大部分时间里都要在调用accept过程时被挂起。 客户在调用一些过程时,如要求服务器的回应时,也会被挂起(阻塞)。 如:gethostbyname,connect,recv 30.10 程序代码长度与差错报告 程序代码中有很多是注释 还有一些用来检查错误 要理解程序,可暂时去掉注释和错误检查,进行简化。 30.11 客户例程用于另一种服务 改变一下客户例程的两个参数(服务器名和端口号),就可以从其他服务器上获取相关信息。如从DAYTIME服务器上获取时间。 DAYTIME服务器的协议端口号为13。 30.12 用另一种客户程序来测试服务器 用telnet客户程序对服务器例程进行测试。 telnet程序需要两个参数: 服务器的计算机名 服务器的协议端口号 举例: telnet localhost 5193 CR 看连接是否成功? 本章知识点 套接字过程调用的顺序 简化后的源代码(理解) 流服务,send和recv 套接字过程与阻塞 附录:运行程序前的一些工作 制作两个工程文件:Server,Client 在主cpp文件中保留下面这一行: #include stdafx.h 运行光盘中的index.htm文件,选择“getting started ?code example”,选择Client.c和Server.c,并将它们的代码拷贝至主cpp文件 在菜单的“工程?设置?link?库文件”的最后添加ws2_32.lib main函数形式改为: main(int argc, char *argv[ ] ) write函数的头文件是io.h 类似的,当遇到函数没定义时,可以选定函数,再按F1得到帮助(函数和头文件的对应关系)。 TCP Server TCP: struct sockaddr_in sad; sad.sin_addr.s_

文档评论(0)

awang118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档