局域网通信软件教案_局域网组网工程教案
局域网通信软件教案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“局域网组网工程教案”。
局域网通信软件教案(SOCKET)
2014.02.27
一、概述
研究、学习意义:局域网通信是日常生活中很重要的一部分,其中所涉及到的技术也是多媒体传输项目的核心技术,通过学习编写通信软件能够较为迅速的掌握网络通信的相关软件技术,特制订此教案供教研室同学作入门参考。
实现方法:利用MFC框架实现软件界面;利用Windows Sockets环境实现网络通信功能。
二、通信软件基础
2.1 Windows应用程序:
MFC是一个微软公司提供的类库,以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。我们主要利用其实现软件界面的搭建,但同时应该掌握其中的基本windows编程技术:掌握MFC的消息机制,尽量掌握如何使用SendMeage编写自己的消息函数;掌握常用控件的基本成员函数,例如按钮、编辑框、列表框等;掌握什么是类,学会继承类,能重载类的成员函数,尤其是CDialog类的成员函数的作用。
设计界面时要考虑几个方面:
界面的美观:第一印象很重要,没有人会对一眼看上去就很粗糙的东西感兴趣。
简洁性:界面上控件,按钮什么的太多让人也会失去兴趣,因为看上去就很复杂。界面应该尽量的界面。
方便用户:除了简洁,最主要的还是要方便用户。毕竟客户是上帝,客户觉得好用才是最重要的。不能为了界面好看,而把软件的操作弄得复杂。意思就是界面的每个部件最好只实现一个功能,在没有必要时不要把多个功能集成。2.2 Windows Sockets基础:
Windows Sockets(套接字)是windows网络应用程序的接口,基于它我们能够实现在网络上传输数据。
套接字在TCP/IP模型中的位置
下面是套接字简介:
流套接字:使用TCP协议进行通信;具有TCP协议所拥有的各种特征;面向连接的、可靠的数据流传输服务;数据包不会出现丢失、重复、乱序等现象。
数据报套接字:使用UDP协议进行通信;具有UDP协议所拥有的各种特征;面向非连接的、不可靠的用户数据报传输服务;数据包可能出现丢失、重复、乱序等现象。
套接字在使用时分为两种模式:
阻塞式:在阻塞模式下,套接字函数要一直等到全部操作完成后才返回 非阻塞式:在非阻塞模式下,一个套接字函数被调用后会立即返回,即使它执行的操作还没有全部完成,当函数最终完成所执行的操作时,Windows通过发送消息的方式通知程序。
套接字通信示例
创建套接字时要根据实际需要选择套接字的类型,例如:对话消息不需要很强的同步性可以采用数据包套接字,文件传输要保证数据顺序和可靠性要求则需采用流套接字。
更多技术细节参考:孙鑫《VC++深入详解》,Bob Quinn, Dave Shute《Windows Sockets网络编程》。
三、软件功能
整个系统采用C/S架构,其可以分为客服端和服务器端两大部分。整个系统要求实现局域网通信的基本功能,包括三个功能块:用户管理,消息发送接收,文件发送接收。最终实现局域网内多用户之间发送文字消息,单用户与服务器之间传送文件。以下是各功能块介绍。
软件示意图
3.1 用户管理:
服务器端等待客户端连接,客户端主动连接服务器端。客户端通过定时问询的方式判断服务器是否在线,服务器收到某用户问询消息则视其在线。服务器负责对在线用户列表进行更新,并将最新在线用户列表通知客户端。3.2消息发送与接收
服务器与用户同时在线时,双方可以自由发送消息,实现技术: UDP数据报。消息长度不超过200字节(可设置)。发送和接收的消息会在显示区域显示,并显示发送和接收的时间。3.3文件发送与接收
实现单用户与服务器之间的文件发送与接收,实现技术:同步TCP数据流。
四、软件流程
参考以下详细流程实现软件;或者参考其他通信软件采用你认为的合理的软件流程。服务器端
1、启动
初始化用户管理user_socket、消息发收msg_socket、文件接收file_socket,均为阻塞式socket。启动接受用户问询线程、接收消息线程、接收文件线程。
2、等待用户连接
user_socket接收客户端定时发送的消息,并向客户端发送更新后的在线用户列表。
3、收发消息
msg_socket接收客户端发送的消息、发出新的消息,将消息内容显示在界面上。
4、监听(listen)文件接收
文件接收file_socket开始监听,等待客户端发送文件的连接请求。
5、接受(accept)文件接收连接
在接收文件线程中接受客户端发送文件的连接请求。
6、接收文件
在接收文件线程中file_socket接收文件数据并写入新的文件。
7、关闭
关闭各个socket 客户端
1、启动
初始化连接服务器user_socket、消息发收msg_socket、文件发送file_socket,均为阻塞式socket。
2、连接服务器端
通过user_socket定时发送问询消息,如果服务器有回应则其在线,并根据返回的在线用户列表更新在线用户。
3、收发消息 msg_socket接收服务器端发送的消息、发出新的消息,将消息内容显示在界面上。
4、发送文件
启动文件发送线程。客户端file_socket连接(connect)服务器端file_socket,并开始读取本地文件、发送文件数据。
5、关闭
关闭各个socket
五、代码规范及文档
5.1代码规范与注释
编写代码不仅仅是把功能实现,也需要有一定的风格。代码结构要很清晰,让不是编写者的人也可以很快读懂代码。同时代码要添加注释,不仅为了防止时间长了自己忘了代码的作用,也是为了其他人更好的读懂自己的代码。注释在编写代码的过程去添加是因为整个工程编写完再去添加会很繁琐,也容易出错,思路没有当时清晰,而且一旦工程很大的情况下将会花费大量的时间。建议去网上找一些编程规范,找出合适自己的风格,并坚持下去。5.2技术文档
将自己的工程设计方案,详细的设计思路等整理成文档,在文档中对软件的必要的部分要进行详细解释。主要部分有一下几点:
1.软件整体结构; 2.各部分功能; 3.功能实现流程;
4.主要功能函数的输入,输出; 5.使用注意事项。
移动通信课程论文题目:无线局域网姓学专提名王长军 号业交班日级 期201130240122电子信息工程技术2011级(1)班2014.01.06 湖北理工学院电气与电子信息工程学院课程论文无线局域......
2010级通信软件课程设计指导老师:汪汉新一、题目学生可根据自己的兴趣从以下参考题目中选择其中一个(使用的编程语言不限,Matlab,C,C++均可),学生也可以自行选择与通信系统相关的......
一、引言网络用户为了能很容易在浩如烟海的网页中搜索到自己想要的网址、文档、程序等,频繁地使用搜索软件。搜索软件(Robot或称Spider)作为一个程序,可以运行在Unix、Solaris、......
Systemview仿真软件介绍及仿真举例1、本次课教学目标:熟悉Systemview仿真软件平台。2、本次课教学重点:熟悉Systemview系统设计窗口; 熟悉Systemview系统定时窗口; 熟悉Systemvi......
认识局域网教学题目:局域网概述 教学目的:一、通过学习使学员掌握几常用 的以太网网络;二、掌握常见的几种以太网网络;教学内容一、10M以太网;二、快速以太网;三、千兆以太网;四、......
