基于TCPIP协议的网络通信小应用程序课程设计


    XX学理学院





    ( 计算机网络 )
    课程设计




    实验时间: 2010学年第二学期
    专业年级: 2008级应数X班
    实验题目: 基TCPIP协议网络通信应程序
    学生姓名: 学号 评成绩_95教师评成绩___
    学生姓名: 学号 评成绩_95_教师评成绩___
    学生姓名______学号 ____评成绩____教师评成绩___
    学生姓名______学号 ____评成绩____教师评成绩___
    指导老师:


    基TCPIP协议网络通信应程序
    1 课程设计题目求
    11 课程设计题目
    掌握基TCPIP协议实现网络通信理解TCPUDP特性实现方式课程设计求建立基TCPIP协议网络通信应程序实验采UDPTCP建议基WINDOWS台
    111 功求
    建立基中心服务器方式时数通信台(IM)求(*选做容):
    1 进行户理户必须登录服务器服务器维护线信息
    2 IM(Instant Message)功户登录进行实时方点点短信息通信聊天
    3 选择求服务器进行转发服务
    4 保存通信记录数库(SQL Server桌面型数库)
    5 进行双方文件传输显示进度
    6 支持断点重传(检查时需功时中断传送次启动显示重传状态)
    *7 数包加密
    8实时语音双传送功
    *9方通话功
    10界面设计求布局合理信息清晰
    112 功求
    1) 求清晰描述设计应答机制数包格式数结构相应算法机密机制等
    2) 功实现求描绘实现方法流程

    2 开发工具软硬件环境简介
    21 开发工具
    开发工具:Microsoft Visual Studio 2008
    22 软硬件环境
    221 软件环境
    l 操作系统:Windows XPWindows 7
    l 开发软件:Microsoft Visual Studio 2008
    l 开发语言:C#语言
    l 台MicrosoftNET Framework v20
    222 硬件环境
    l 分辨率:1000×750
    l 服务器: PentiumIII 500更高
    存128M
    硬盘:少40G
    l 工作站: PentiumII 266微机
    存:64MB
    硬盘: 少5G
    3 程序实现基思想
    31 程序设计分析
    设计实现基TCPIP协议网络通信应程序实际基Socket聊天室聊天室聊天室服务器聊天室客户端组成聊天室服务器负责理客户端连接发送消息客户端聊天室客户端负责接收者发送聊天消息登录聊天室服务器等
    聊天室服务器应该支持聊天室客户端进行时连接聊天室服务器聊天室客户端间根聊天协议进行通信
    32 基思想
    程序实现分两部分服务器部分客户端部分程序首先设计聊天室服务器设计客户端部分生成执行文件
    1. 服务器
    服务器端理着聊天务维持着张前线户列表转发户发送消息设计思想:
    3) 利控件设计窗体
    4) 功实现
    Ø 监听机IP址中指定端口
    Ø 客户端该端口发出请求时服务器程序立刻建立该客户端连接启动新线程处理该客户端
    Ø 根客户端发送种请求执行相应操作结果返回客户端
    5) 运行调试
    2. 客户端
    客户端应程序包含户登录窗口户聊天窗口允许户登录服务器服务器发送消息时接收服务器返回信息
    1) 设计登录窗体聊天窗体
    2) 基课程设计求实现窗体应功
    Ø 服务器发送连接请求
    Ø 服务器程序确认建立服务器连接获服务器交互流通道
    Ø 通网络流通道服务器端程序进行数通信
    3) 运行调试

    4 系统功框架图系统流程图
    41 功框架图

    图1 功框架图

    42 系统流程图

    图2系统流程图
    5 具体实现程
    51 设计准备
    511 TCP运
    客户端服务器通信法外客户端直接通信两客户端相互通信客户律先聊天信息发服务器告诉服务器改信息发送客户服务器收信息该信息转发外客户设计实现TcpListener类侦听接受传入连接请求
    基方法:
    表1 TCP连接基方法
    TcpListener类基方法

    Start
    启动监听
    Stop
    关闭TcpListener停止监听请求
    AcceptSocket
    步阻塞方式获取返回接收发送数Socket象时传入连接队列中移该客户端连接请求
    512 Socket套接字运
    设计中定义通信程序识命令(见第三点)定义简单协议程序中支持定义协议采套接字实现
    根连接启动方式套接字连接目标套接字间连接程分服务器监听客户端请求连接确认三步骤
    n 服务器监听:服务器套接字定位具体客户端套接字处等连接状态实时监控网络状态
    n 客户端请求:客户端套接字提出连接请求连接目标服务器套接字客户端套接字必须首先描述连接服务器套接字指出服务器套接字址端口号然服务器套接字提出连接请求
    n 连接确认:服务器套接字监听客户端套接字连接请求时响应客户端套接字请求服务器套接字信息发客户端旦客户端确认信息连接建立服务器套接字继续监听客户端套接字连接请求
    服务器客户端必须分进行编程间连接图示

    图3 服务器客户端连接图
    513 通信程序中识命令定义
    程序中定义识命令格式两位整数拼接成字符串位含义:
    第位 第位0:客户机服务器发送命令
    第位1:服务器客户机发送命令
    01离线
    02请求线列表
    识命令格式 03请求闪屏振动
    第二位
    服务端 04请求指定户闪屏振动 05请求广播消息
    06请求指定户发送文件
    求转发指定户户名 :转发指定户
    11服务器求客户机更新线列表
    客户端 12服务器求客户机做闪屏振动
    default接受户消息者系统消息正文

    6 服务器具体设计
    611 窗体设计
    新建Windows窗体命名Form1cs连接服务器建立聊天室服务器客户连接面进行聊天服务器建立般处监听状态等客户机连接申请
    窗体控件表示
    表2 控件
    控件类型
    控件名字



    两钮分连接服务器退出连接

    标签
    两标签端口号显示默认端口号

    文框
    两文框户输入端口号显示服务器连接等系统消息

    图4 窗体设计图
    612 编码
    1) 创建服务器
    部分程序编写实现获效端口号IP址设计点:
    l 动获取IP址
    IPAddress _ip new SystemNetIPAddress(DnsGetHostByName(DnsGetHostName())AddressList[0]Address)
    l 选择否输入端口号
    端口号进程标识端口号范围0655351000端口标准协议占程序中端口号般1000值
    输入端口号程序设置效端口号范围102365535间端口效连接服务器提示相应信息
    默认端口号设置8888
    没输入端口号者端口号效程序动默认端口号连接服务器
    代码:
    private void button1_Click(object sender EventArgs e)
    { thisbutton1Enabled false
    string portParam
    portParam textBox_portText
    if (portParam stringEmpty)
    { if (intTryParse(portParam out _port) || _port < 1023 || _port > 65535)
    {
    _port 8888
    textBox1 AppendText (端口号合法默认端口号接受)
    } }
    textBox1 AppendText (服务器已启动正监听\n)
    textBox1 AppendText (stringFormat(服务器IP:{0}\t端口号:{1}\n _ip _port))
    _tcpl new TcpListener (_ip _port)
    _tcplStart()
    trd new Thread(new ThreadStart(thisThreadTask))
    trdStart()
    }
    2) 线程监听执行
    服务器客户端聊天室模型出服务器客户端连接客户端间连接通执行流实现独立执行流线程编写线程监听线程执行体监听客户端请求
    l 线程监听
    创建服务器代码中输入端口号效执行TcpListener类侦听接受传入连接请求开启线程调ThreadTask方法
    ThreadTask方法点:
    1) Socket套接字接受连接方法
    2) 验证户名否唯前哈希表没该户允许连接否连接失败
    3) 调线程执行体
    4) 户发送系统消息AppendText方法文框中追加入系统消息foreach循环系统消息传客户端
    l 线程执行体
    线程执行体客户端服务器转发消息线程执行体实际聊天室中服务器端聊天定义协议解析部分程序流程图

    图5 客户端程序流程图
    5) 退出连接
    编程点:(1)TCP停止监听
    (2)清线列表
    代码:
    private void button2_Click(object sender EventArgs e)
    {if (_tcpl null)
    {
    _tcplStop()}
    关闭客户端连接清理资源
    if (_transmit_tbCount 0)
    { foreach (Socket session in _transmit_tbValues)
    {
    sessionShutdown(SocketShutdownBoth)
    }
    _transmit_tbClear()
    _transmit_tb null
    }
    Close()}
    62 客户端具体设计
    621 登录窗体
    1. 窗体设计图
    新建Windows窗体命名login_frmcs验证登录信息保证登录户重复端口号IP址效
    控件表示:
    表3 户端登录界面窗体设计
    控件类型
    控件名字


    框架
    组控件添加标题框架请登录

    标签
    三标签分户名服务器IP端口号提示相应TextBox信息

    文框
    三文框输入户名外两显示服务器IP端口号根实际情况输入合法服务器IP端口号


    两钮分登录取消前者登录聊天室点击者会关闭登录界面


    图6 户登陆界面
    2. 程序点
    1) TCP连接
    新建TCP连接类TCPConnection初始化IP址端口号TcpClient新实例指定IP址端口号连接TCP机
    2) 验证登录信息
    户输入户名服务器IP址端口号输入IP址效提示IP址合法果输入端口号法转化等效32位符号整数102465535间提示端口号合法否进行服务器连接
    3) 服务器发出连接请求服务器发送户名确认身份
    果客户端连接服务器提示法连接服务器请重试然服务器发送户名确认身份输入户名转化UTF16格式编码写入NetworkStream进行读取已存提示您户名已请尝试户名果存获取前登录窗体文进入聊天界面
    622 聊天窗体
    l 窗体设计
    新建Windows窗体作聊天界面 选择聊天室进行广播选择悄悄话进行聊天点点发送文件修改皮肤颜色发送数进行加密解密
    窗体控件表示
    表4 客户端界面聊天窗口设计
    控件类型
    控件名字


    图片框
    两图片框显示图


    标签
    八标签中两分提示前户服务器IP端口号外六提示相应文框容操作

    格式文控件
    格式文控件提供高级文输入编辑功显示通信容

    文框
    五文框输入发送容两分显示加密解密容两分显示发送已接收文件路径

    文框
    文框拉式显示前线户名选择接收方

    单选框
    两组单选框组选择皮肤颜色含三组选择聊天室悄悄话

    进度条
    两进度条显示文件传输保存进度


    十钮分显示皮肤颜色保存消聊天记录选择发送保存文件加密解密发送信息关闭界面
    l 线程执行体
    部分服务器相应客户端连接服务器服务器立刻建立数接收独立线程接收线程中命令进行解析处理程序流程图

    图 7 客户端程序框图
    l 功模块
    1. 聊天功
    1) 聊天
    聊天室模式进行聊天信息发送相关信息写入网络流服务器发送广播请求信息接收框会显示聊天状态发送时间信息容线户会显示发送方户名发送时间信息容
    相关代码:
    果聊天室模式服务器发送广播请求
    if (broadcast_rbChecked)
    {
    localTxt stringFormat([广播]您 {0} 说:\r\n{1}\r\n\r\n DateTimeNow msg)
    sendTxt stringFormat([广播]{0} {1} 说:\r\n{2}\r\n\r\n _username DateTimeNow msg)
    发送广播请求
    _nwsWrite(new byte[] { 0 5 } 0 2) _nws发送接收信息网络流
    }
    2) 私聊
    选择进行悄悄话需前线户选择方进行聊天没选择户法进行通信会提示请选择接收者\n果没接受者选表明前您线
    发送方会接收消息提示发送时间接收者户名发送容接收方会接收发送方户名发送时间发送容
    2. 聊天记录
    1) 保存聊天记录
    点击保存聊天记录会创建SaveFileDialog新实例存文件类型设定*txt输入保存文件名会前接收信息文框容文文件保存
    private void save_btn_Click(object sender EventArgs e)
    {
    DialogResult ret
    SaveFileDialog sfd new SaveFileDialog()
    sfdFilter 文文件(*txt)|*txt
    sfdAddExtension true
    if ((ret sfdShowDialog()) DialogResultOK)
    {
    chatrcd_rtbSaveFile(sfdFileName RichTextBoxStreamTypePlainText)
    }
    }
    2) 清聊天记录
    点击清聊天记录钮出现提示信息确实消?消恢复选择确定调clear()方法前接收信息框容全部清空

    图8 清聊天记录提示窗口
    3. 文件传输
    l 选择文件
    点击选择文件进入开文件话框根文件类型筛选文件找发送文件点击确定读取选文件路径名
    l 发送文件
    功悄悄话中实现聊天室模式会提示聊天室发送文件需选择接收方否会提示请选择接收者\n果没接受者选表明前您线果文件路径名空提示请选择文件传输路径否根路径名指定路径名初始化StreamReader新实例sr读取文件容关闭sr释放读取器相关系统资源启动控制发送进度条定时器
    l 保存文件
    点击接收文件弹出保存文件话框选择文件保存路径指定路径指定文件初始化StreamWriter新实例TextWriterWriteLine(String value)方法行结束符字符串写入文流时启动控制进度条定时器
    4. 数加密
    部分采RSA算法实现先初始化RSA象RSA算法进行解密加密表RSA算法应方法说明


    表5 算法应方法说明
    名称
    说明
    Encrypt方法
    RSA算法数进行加密该方法两参数第参数加密字节数组第二参数填充方式(true表示OAEP方式填充false表示PKCS#15版填充)果操作系统Windows XP版true果Windows 2000版false
    Descrypt方法
    RSA算法数进行加密容相
    具体代码实现:

    RSA算法进行解密

    加密字符串

    private string RSAEncrypt(string text)
    {
    RSACryptoServiceProvider rsa GetRSAProviderFromContainer(rsa1)
    byte[] bytes EncodingUnicodeGetBytes(text)
    byte[] encryptedData rsaEncrypt(bytes true)
    return ConvertToBase64String(encryptedData)
    }

    RSA算法进行解密

    解密字符串

    private string RSADescrpt(string text)
    {
    RSACryptoServiceProvider rsa GetRSAProviderFromContainer(rsa1)
    byte[] encryptedData ConvertFromBase64String(text)
    byte[] decryptedData rsaDecrypt(encryptedData true)
    return EncodingUnicodeGetString(decryptedData)
    }

    获取初始化RSA象

    密钥容器名
    RSA象
    private static RSACryptoServiceProvider GetRSAProviderFromContainer(string containerName)
    {
    CspParameters cp new CspParameters()
    ProviderType初始化值24该值指定PROV_RSA_AES提供程序
    cpProviderType 24
    果存名containerName密钥容器创建初始化cp
    果存直接根保存容初始化cp
    cpKeyContainerName containerName
    RSACryptoServiceProvider rsa new RSACryptoServiceProvider(cp)
    return rsa
    }

    7 运行结果分析
    71 服务器
    创建连接服务器直处监听状态时AppendText方法断追加文显示系统消息文框中示意图

    图9 服务器界面


    72 客户端
    721 登录窗体
    登录窗体设计涉验证户名否唯端口号否效服务器IP否合法没提供新户注册设计足果端口号正确户名唯程序提供相应提示








    图10 服务器登陆错误提示
    722 聊天窗体
    1. 聊天窗体

    图11 聊天窗体
    2. 保存聊天记录
    点击聊天窗体保存聊天记录钮弹出话框图命名文件名字保存存储聊天记录txt文

    图12 保存聊天记录窗口
    txt容显示图:

    图13 消息记录

    3. 文件传输
    文件传输进度效果图:

    图14 文件传输进度效果图
    4. 数加密

    图15 数加密效果图
    接收方容显示图:

    图16 接收方容显示图
    8 总结
    81 XX总结
    次课程设计然总体感觉难程中学新知识次课程设计建立基TCPIP协议网络通信应程序功类似生活中常QQ想做课程设计学少学点知道QQ软件什开发出做课程设计点总结
    程序设计知识方面次设计涉TCPSocket套接字线程网络流等网络应编程知识说知识陌生开始设计时通书籍查阅利视频学弄清整设计思路整设计找起点通信应程序两客户间通信必须通客户端实现分设计服务器客户端必服务端启动服务器TcpListener监听端口客户端连接通AcceptSocket返回客户端连接Socket象然通读写Socket象完成聊天室客户端数传输客户端启动创建Socket象通象连接服务器成功通socket完成数接收发送外服务器客户端连接线程
    程序设计遇问题方面方面线程Thread类常出现种错误运行客户端程序执行文件开外窗口进行通信程序会出现图错误显示线程间操作效果两窗口时执行文件开会出现样错误方面数加密解密设计RSA算法遇问题解密设计直没法运行成功出现错误现象运行两聊天窗体时消失没解密算法成功应采简单时发送加密码文消息接收方显示
    程序改进方面登录部分没设置新户注册户名唯端口IP正确成功登录会户登录造成混乱方面设计解密功没真正实现语音功断点传送功程序扩充改进方
    综合次设计组严格设计求分析应程序开发点通资料视频学窗体设计功实现设计实现网络通信等功
    82 XX总结
    次计算机网络课程设计加深网路协议套接字编程解然限通实验学基够协议设计思想应现实应中实现通信功
    次课程设计采C#语言编程然控件某方法定解熟悉网络应编程设计程中遇少困难编程程中错误总找出原者需花费更时间修改刚开始时方法应问题熟悉情况想方法实现导致功欠缺者产生突
    第次编写基服务端客户端网络程序刚开始时总挺疑惑:样实现逻辑连接?觉难办事实事没尝试永远知道事情性底实践总检验问题直接效方法次课程设计加深网络协议理解时扩展知识面学工作中会动手练更加深理解巩固知识结构
    力限功没实现例语音通话断点重传想加入老失败然遗憾程序中加入功包括闪屏振动界面皮肤选择界面更加生动灵活算种补偿吧尝试建数库实现户理信息存放编程程中总顾虑数库应该实现时间关系搁浅
    次课程设计缺点:异常情况考虑足异常处理够导致连接出问题意外终止者没法操作重新启动
    9 参考文献
    [1]谢希仁.计算机网络(第五版).北京:电子工业出版社20075
    [2]马俊 C#网络应编程(第二版)北京:民邮电出版社20101
    [3]谭桂华魏亮 Visual C#高级编程范例北京:清华学出版社20044
    [4]吴晨陈建孝 C# 网络通信程序设计案例精讲 北京:清华学出版社200610
    [5]刘瑞新C#网络编程应北京:机械工业出版社20046
















    课程设计评分表
    教师评阅:
    □ 设计目明确  □操作步骤正确 
    □设计文稿(表格程序数库网页)符合求
    □ 设计结果正确 □设计分析总结全面 □设计报告规范

    课程设计答辩情况记录:
    □ 思路清晰语言表达准确概念清楚
    □ 准备工作充分 具备必报告资料报告规定时间完成
    □ 回答问题理基概念清楚问题回答简明准确 
    □ 前工作改进突破独特见解

                        
    评阅教师签名:

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 8 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    XX大学软件设计TCPIP网络通信程序设计实验报告

    Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境。Qt Creator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境 (IDE),并确保首次接触Qt框架...

    5年前   
    1397    0

    基于WinDis32技术实现网络通信监测

    基于WinDis32技术实现网络通信监测【摘要】 本文论述了网络通信监测的实现原理与实现过程,遵照国际标准化开放系统互联(OSI)七层体系结构,利用网络驱动接口规范WinDis32 V5.0技...

    10年前   
    412    0

    小古文课程设计

     拓展性课程“智乐点课坊” 课程类型 菜单 课程名称: 智乐小古文 适用年级: 四、五年级 总 课 时: 30课 ...

    1年前   
    399    1

    基于TCP协议的通讯录网络应用课程设计报告

    网络应用课程设计报告系 (院): 计算机科学学院 专业班级: 计科 姓 名: ...

    1年前   
    475    0

    TCPIP协议与网络编程期末大作业

    编号TCP/IP协议与网络编程期末大作业 题目: 基于Socket的网络通信 物联网工程 学院 计算...

    3年前   
    488    0

    基于MATLAB的ASK调制解调实现课程设计

    大学《通信原理》课程设计报告学 院 专 业 班 级 学 号 ...

    3年前   
    726    0

    基于UML的图书管理系统设计课程设计

    滨江学院 统一建模语言课程设计报告( 2013 -- 2014 年度第 二 学期)课程名称: 统一建模语言课程设计 题 目: 图书馆管理系统 院 系: ...

    1年前   
    398    0

    基于8051的智能小车设计课程设计

    测控电路课程设计题目名称: 智能循迹小车 专业班级: ...

    2年前   
    583    0

    基于arm键盘课程设计

    基ARM课程设计 专 业:自动化学 号:姓 名: 在ARM嵌入式应用中,人机交互对话最通用的方法就是通过键盘和LCD显示进行的,本设计是通过键盘向系统发送各种指令或置入必要的数据信息。键盘模块...

    2年前   
    469    0

    基于plc的交通灯的设计课程设计

    任务说明书一、 控制要求:1、系统控制示意图由十字路口交通灯示意图可以知道,在南北和东西主干道上各有一盏红绿灯;在南北和东西人行道上各有一盏红灯和绿灯。2、控制要求 启动及停止按钮的控制...

    3年前   
    887    0

    数据库应用程序课程设计酒店住宿管理系统

    成绩 课程设计报告 题 目 酒店住宿管理系统 课 程 名 称 数据库应用程序课程设计 院 部 名 称 信息技术学院 ...

    1年前   
    276    0

    网络通信公司年鉴

    网络通信公司年鉴 【概况】公司在各级领导和社会各界的大力支持下,以自身网络优势致力于业务发展,以综合信息化优势致力于行业应用。对内坚持求真务实,强化经营管理;对外加强多方合作,拓展市场空间。...

    12年前   
    12493    0

    基于微信小程序的测试设计与分析

    基于微信小程序的测试设计与分析Testing Design and Analysis Based on WeChat Mini Program日成绩评定 成绩项论文成绩(百分制)折合比例...

    3年前   
    963    0

    电气控制技术课程设计基于PLC电子计算器课程设计

     电气控制技术课程设计说明书 电子计算器 学生姓名: 专 业: 自动化 班 级...

    1年前   
    307    0

    网络通信公司实习报告范文

    网络通信公司实习报告范文  学生姓名:李xx  实习单位:co-exceed  实习时间:xx.12.03-xx.12.07  本人为中北大学信息商务学院08级电子信息工程专业三班的实习生李x...

    9年前   
    419    0

    基于单片机的拔河游戏机设计课程设计

    ××大学××学院××课程设计基于单片机的拔河游戏机设计学生姓名学 号所 在 系专业名称班 级指导教师成 绩 ...

    3年前   
    585    0

    FPGA课程设计基于RAM的十口8位计数器

    FPGA课程设计报告题 目: 基于RAM的十口8位计数器 院 系: 通信与信息工程学院...

    3年前   
    453    0

    基于单片机的自动节水灌溉系统课程设计

     数理与信息工程学院应用系统设计 题 目: 基于单片机的自动节水灌溉系统 专 业: 计算机科学与技术(专升本) 班 级: ...

    3年前   
    612    0

    基于单片机的交通灯显示系统的设计与研究课程设计

     XX学院课程设计课 程 单片机课程设计 题 目 交通灯系统 院 系 机电系 ...

    3年前   
    901    0

    基于单片机的数字温度计设计课程设计

    基于单片机的数字温度计设计引言随着现代信息技术的飞速发展和传统工业改造的逐步实现.能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需...

    3年前   
    937    0

    文档贡献者

    文***享

    贡献于2020-11-09

    下载需要 8 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档