一、要求

要求:分别设计基于对话框的客户端和服务器端的程序,实现两端的通信,服务器端能接受客户端的消息,并且显示客户端的连接信息,把客户端信息分发给各个客户端。

二、软件系统设计方案和原理

  • 1.Socket原理介绍:

Socket概述:
Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket实质上提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。正如打电话之前,双方必须各自拥有一台电话机一样。在网间网内部,每一个Socket用一个半相关描述:协议,本地地址,本地端口。一个完整的Socket有一个本地唯一的Socket号,由操作系统分配。
Socket分类:
根据传输数据类型的不同,Socket主要分为三类:①流式Socket;②数据报Socket;③原始Socket。
①流式Socket(SOCK—STREAM),在这种方式下,两个通讯的应用程序之间要先建立一种虚拟连 接,提供可靠的、面向连接的通信流,它使用TCP协 议,从而保证了数据传输的正确性和有序性。

②数据报Socket(SOCK—DGRAM),它使用数据报协议UDP,定义了一种无连接服务,数据通过相互独立的 报文进行传输,是无序的,并且不保证可靠、无差错。

③原始Socket,原始套接字允许对底层协议如IP或 ICMP直接访问,它功能强大但使用较为不便。主要用于一些协议的开发。


  • 2.Socket通信机制:

(1)客户端机制顺序:创建对象 发送连接请求 向服务器发出服务请求 接收服务器返回结果 关闭
(2)服务器机制顺序:创建对象 指定端口号 监听客户端的连接请求 等待连接建立 接收客户端的请求消息 处理客户端的请求消息 处理结果返回客户端 关闭
(3)客户端与服务器交互机制:客户端与服务器的交互主要有四个部分——建立连接、请求数据、回应数据、断开连接。具体介绍如下,共四点。


客户端在创建对象后可向服务器发出建立连接的消息请求。建立连接前必须打开服务器监听客户端的请求,当客户端发出连接请求时服务器可及时响应并使双方建立连接。


指建立连接成功后客户端可以向服务器发出服务请求,此时客户端监听并接收消息请求,并对其进行处理。


在客户端处理完接收到的消息请求后将处理结果返回客户端。此步骤与请求数据为交互的核心步骤。


服务器与客户端在建立连接成功后可以在任意时刻选择断开连接。

简易聊天程序 系统架构图_简易聊天程序 系统架构图

  • 本题设计的是一个基于VS环境下MFC的socket局域网聊天室,设计内容包括聊天室界面的制作及初始化、动态启用并实现动态伸缩窗口、Socket编程、异步IO模型及多线程、客户端队列及其线性处理、客户端编程及数据发送、程序关闭及线程的结束、任务栏托盘功能的实现,设计方案如下:






四、成果

简易聊天程序 系统架构图_聊天室_02

简易聊天程序 系统架构图_C++_03