PAGE \* MERGEFORMAT 4

东南大学自动化学院

实 验 报 告

课程名称: 信息通信网络概论

第3次实验

实验名称: 实验三 基于客户/服务器模式的网络通信编程实现

院 (系): 自动化 专 业: 自动化

姓 名: 学 号:

实 验 室: 金智楼 实验组别:

同组人员: 实验时间: 2016 年 12 月 13 日

评定成绩: 审阅教师:

目 录

一.实验目的和要求·····································3

二.实验原理···········································3

三. 实验方案与实验步骤·································4

四.实验设备与器材配置·································5

五.实验记录···········································5

六.实验总结··········································10

七.思考题或讨论题····································11

附录:部分代码

实验目的和要求

进一步了解网络编程的过程;

掌握Windows环境下基于WinSock的编程方法和通信实现;

熟悉客户/服务器模式的网络通信编程实现,编写一个聊天工具,即以客户端和服务器端的模式进行互发消息。

实验原理

一个在建立分布式应用时最常用的范例便是客户机/服务器模型。在这种方案中客户应用程序向服务器程序请求服务。这种方式隐含了在建立客户机/服务器间通讯时的非对称性。客户机/服务器模型工作时要求有一套为客户机和服务器所共识的惯例来保证服务能够被提供(或被接受)。这一套惯例包含了一套协议。它必须在通讯的两头都被实现。根据不同的实际情况,协议可能是对称的或是非对称的。在对称的协议中,每一方都有可能扮演主从角色;在非对称协议中,一方被不可改变地认为是主机,而另一方则是从机。一个对称协议的例子是Internet中用于终端仿真的TELNET。而非对称协议的例子是Internet中的FTP。无论具体的协议是对称的或是非对称的,当服务被提供时必然存在“客户进程”和“服务进程”。 一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。在这个时刻,服务程序被“惊醒”并且为客户提供服务-对客户的请求作出适当的反应。这一请求/相应的过程可以简单的用图2-1表示。虽然基于连接的服务是设计客户机/服务器应用程序时的标准,但有些服务也是可以通过数据报套接口提供的。

图2-1 客户机/服务器模型

实验方案与实验步骤

客户机/服务器工作流程

图3.1 客户机/服务器工作流程

聊天室的工作流程

图3.2 聊天室工作流程

首先,服务器要创建一个用于侦听的套接字,为该套接字分配地址之后,调用listen()函数使它处于侦听状态;客户机在创建套接字完毕后,为套接字分配地址,然后调用connect()函数,请求与服务器套接字连接;服务器套接字在收到客户机的连接请示后,调用accept()函数,该函数创建一个用于连接的套接字。应用该套接字和客户机上的连接套接字,用户就可以在服务器和客户机之间进行数据传输了。在结束传输之后,客户机调用closesocket()函数关闭套接字,服务器也调用该函数关闭用于侦听和连接的套接字。

套接字事件处理相关函数

OnAccept():监听套接字在断口听到连接请求时,应用程序框架调用该函数以告之可以接受或拒绝连接请求,调用Accept来接受请求,建立连接。

OnConnect():当客户端套接字连接请求完成后,应用程序框架调用该函数,告之是否成功。

OnSend():框架调用该函数通知该套接字现在可以调用Send函数开始传送数据。

OnReceive():框架调用该函数通知套接字可以调用Receive函数从数据缓冲区中取数据。

OnClose():框架调用该函数告之与其相连的对方套接字已被关闭。

系统实现

图3.3 系统实

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐