1 / 14
文档名称:

浙江大学实验报告.pdf

格式:pdf   大小:267KB   页数:14页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

浙江大学实验报告.pdf

上传人:bodkd 2021/8/13 文件大小:267 KB

下载得到文件列表

浙江大学实验报告.pdf

文档介绍

文档介绍:浙江大学实验报告

课程名称: 网络程序设计 实验类型: 设计型
实验项目名称: 简单TELNET客户端和服务端的实现
学生姓名: 韩军伟 专业: 软件工程 0406 学号: 3042211175
同组学生姓名: 无 指导老师: 黄正谦
实验地点: 玉泉校区 32 舍 417 实验日期: 2006年 3 月 8 日




1. 设计说明
功能分配
本实验要求完成 TELNET 的客户端和服务端两部分内容,主要完成以下功能:
1. 客户端与服务器端的连接与通信
2. 客户端及服务端拒绝协商功能
3. 服务端实现并发功能(以 select 实现)
4. 其他功能(设置, 字符回显功能等)
本次实验涉及到 TELNET 标准协议部分只要求拒绝协商功能, 确保能与 windows 下面的
TELNET 顺利连接上, 其他功能不要求实现, 为了清晰地看到客户端和服务端的之间的通信,
我增加了字符回显功能。
程序的总体结构
由于程序比较简单,所以选择采用字符界面实现,由客户端和服务端两部分组成。
客户端:
客户端主要分为两块部分组成,一块用于接收服务器发来的数据,如果是命令则判断是
否为协商请求,是则拒绝,不是就不用处理,只需简单得告诉用户服务器发来识别号为多少
的命令。如果不是命令,则统统显示在屏幕上。另外一块为控制台操作,从控制台读取用户
输入的信息,发送至服务端程序。两块部分以两个线程完成。
服务端:
由于服务端不需要人为地介入,所以服务器程序只需一个线程即可,程序启动后用
于监听的套接字立刻处于监听状态,不断接受客户端的连接请求,针对不同的请求作出相应
的处理。由于服务端要求实现并发功能,在服务端中维持一个客户端的队列,保存每个已经
连接到服务端的客户信息。开发的时候用 select 实现,分别查看每个套接字的状态,如果监
听套接字可读,表示有新客户连接进来,执行相应操作,如果其他套接字(用于跟客户端通
信的 socket)可读,则表明有客户数据到来,再执行相应的工作。
模块划分
整个程序划分为客户端和服务器两大模块。
客户端程序可以将整个程序划分为如下模块:
1.初始化模块。(包括 socket 的初始化等内容)
2.向服务端发送数据
3.接收服务端发来的信息,做相应的处理。
命令信息
数据信息
服务端程序可以将整个程序划分为如下模块:
1.初始化模块(包括 socket 的初始化等内容)
2.从客户端接收数据模块
有新的连接进入
有数据到来
数据结构
由于这个程序要求实现的功能比较简单,这个程序中没有什么复杂的数据结构,客户端
用到了数组和结构体等数据结构,服务端用到的数据结构稍微复杂一点,除了客户端有的数
据结构以外另外还使用了容器(vector)存放客户端信息,每一条信息对应一个结构体,该结
构体中保存了客户端 socket,ip 等一些基本的信息。
实现算法、逻辑流程
由于整个程序采用 C++编写,界面采用了最基本的字符界面,功能要求简单,vector 中
一些函数的算法已在内部实现,由于本程序基本以网络应用为主,所以没有什么复杂的算法。
逻辑流程:
客户端:
客户端的实现较为简单,基本流程如下:
1. 运行程序,用户输入服务器的 IP 和端口号;
2. 初始化 socket 并连接服务端。
3. 启动接收线程,用于不断从服务端接收消息。判断消息类型,做相应处理。
4. 主函数中不断从字符界面读取用户输入信息,反馈到服务端