- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8.1 TCP网络程序设计模型 8.1.2 客户端工作流程 注意:serveraddr参数是指向远程服务器地址的一个指针,因此在调用此函数前一定要知道远程服务器的地址和端口号,并把其值赋给serveraddr结构量,否则无法使用该函数。 ? 第四步:连接建立后,使用send()或WSASend()函数发送数据,或使用recv()或WSARecv()函数接收数据。 ? 第五步:使用closesocket()函数关闭套接口。 ? 第六步:最后调用WSACleanup()函数,结束Windows Sockets API的使用。 至此,一次客户向服务器请求服务的过程结束。 第*页 8.1 TCP网络程序设计模型 8.1.3 服务器与客户机通信过程 第7章我们讨论过服务器与客户通信的过程要用一个五元组来标识。这个五元组是: (协议,本地IP地址,本地端口号,远程IP地址,远程端口号)。 对于面向连接的(TCP协议)通信来说,服务器与客户机之间的连接建立完成后,这个五元组就建立了,如表8-1所示。 五元组 使用的协议 本地IP地址,本地端口号 远程IP地址,远程端口号 服务端五元组 由socket()确定 由服务器端调用bind()时确定 由accept()确定 客户端五元组 由socket()确定 由客户端的bind()调用确定。如果客户端没有进行bind()调用时,或调用了bind()但没有指定具体地址或端口时,由系统内核自动确定地址和端口。 由connect()确定 第*页 8.1 TCP网络程序设计模型 8.1.4 基于TCP协议的网络程序框架 服务器与客户机进行的上述通信过程可以用图8-1表示。 关闭TCP连接 用三次握手过程建立TCP连接 交换数据 交换数据 WSAStartup() socket() listen() accept() 等待客户连接请求的到来 recv() send() closesocket() WSACleanup() socket() connect() WSAStartup() send() recv() closesocket() WSACleanup() 图8-1 面向连接的客户机-服务器程序工作模型 bind() 第*页 8.2 TCP实例程序1 实例程序说明 在Internet协议中,有一个名叫Daytime的非常简单的协议,这个协议由RFC 867定义,它用于返回服务器当前时间和日期。Daytime服务器应用程序忽略客户机发送的任何数据,只是检查本地时钟,并用字符串的形式返回当前日期与时间,客户机可以对取得的这个字符串进行处理,取得有关日期和时间。Daytime协议虽然很简单,但它也很有用,如可用于一个企业服务器与某个时间标准同步,也可用于查检网络的连通性和调试网络程序等工作。 基于程序TCP的daytime服务,服务器在TCP端口13侦听,一旦有连接建立,就返回ASCII形式的日期和时间,在传送完成后关闭连接。从客户机接收到的数据则被忽略。 本节和实例程序中,我们设计一个Daytime服务器程序,该程序监听客户机的连接请求。如果有客户机与服务器建立连接,服务器就将当前的时间与日期发送给客户机。客户机在收到服务器发送的时间与日期后,以字符串的形式将其显示出来。 在图8-2为服务器启动后的窗口,如果有客户端进行了请求并连接成功,则显示访问者的个数。图中表示客户端进行了3次请求。 第*页 8.2 TCP实例程序1 客户端程序运行后的窗口 第*页 8.3 TCP实例程序2 8.3.1 程序要求 该程序的要求与8.2.1中介绍的程序要求相同,只是使用Java工具来实现。服务器端程序运行的窗口如图8-4所示,图中有3个客户端进行了请求。 daytime客户端程序运行结果如图8-5所示,图中客户端程序运行了3次 第*页 8.3 TCP实例程序2 8.3.2 服务器程序 在Java语言中,设计网络程序的有关类被放在包中。Java语言的网络程序设计其基本原理与VC++中的类似,因为Java语言本身也使用了前面介绍的伯克利套接口来编写网络程序。 本节要设计的基于TCP协议的、面向连接的网络程序要使用该包中的ServerSocket类,该类包含了设计一个服务器程序所要求的所有功能。 利用ServerSocket类创建一个服务器程序的典型工作流程如下: (1)在指定的监听端口上创建一个ServerSocket对象。 (2)调用ServerSocket类型对象的accept()方法在指定的端口监听客户的连接请求。accept()方法在调用时会阻塞当前Java线程,直到收到客户端的请求,accpet()方法返回连接客户端与服务器的Socket对象。 (3)调用getInputStream
您可能关注的文档
最近下载
- 苏州联控LNC820 860用户手册.pdf
- 汽修厂空气压缩机安全操作规程.docx VIP
- 汽车底盘异响故障诊断方法.pptx VIP
- 成人2型糖尿病口服降糖药联合治疗专家共识(2025版)解读.pptx
- 【沪教版】一年级上册数学试题-20以内加减法 (1).doc VIP
- 卫星遥感数据的云及云阴影检测-孙林老师.pdf VIP
- 国家教育考试标准化考点建设规划及实施方案编制培训.ppt VIP
- 22MR601 城市道路—交通标志和标线.pdf VIP
- 2025年六年级上册数学试题-第二单元测试卷-西师大版(含答案) .pdf VIP
- 2024年高考化学二轮复习专题10 水溶液中的离子反应与平衡(讲义) .docx
文档评论(0)