版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 设 计 任 务 书 9.多点对多点网络程序设计,根据网络数据传输原理设计聊天室软件,具体要求:1) 学习计算机网络连接原理; 2) 学习网络数据传输的基本原理; 3) 学习网络连接的底层协议; 4) 设计聊天室软件; 5) 面向用户的操作界面; 6) 具有文件共享功能。 目录一、设计目的1二、设计任务与要求1三、开发软件介绍1四、设计内容41、设计框架42、设计程序53、运行结果12五、设计总结15六、设计心得16七、参考文献16一、设计目的通过本课程设计的学习,学生将复习所学的专业知识,使课堂学习的理论知识应用于实践,通过本课程设计的实践使学生具有一定的实践操作能力,为学生完成毕业设
2、计任务打下基础。 二、设计任务与要求 多点对多点网络程序设计,根据网络数据传输原理设计聊天室软件,具体要求:1) 学习计算机网络连接原理; 2) 学习网络数据传输的基本原理; 3) 学习网络连接的底层协议; 4) 设计聊天室软件; 5) 面向用户的操作界面; 6) 具有文件共享功能。三、开发软件介绍微软公司的visual basic 6.0是windows应用程序开发工具,使目前最为广泛的、易学易用的面向对象的开发工具。visual basic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。故而,
3、实现本系统vb是一个相对较好的选择。在 visual basic 中,可通过属性、方法和事件来说明和衡量一个对象的特征:事件(event)事件是指发生在某一对象上的事情。事件又可分为鼠标事件和键盘事件。例如,在命令按钮(command button)这一对象上可能发生鼠标单击(click)、鼠标移动(mouse move)、鼠标按下(mouse down)等鼠标事件,也可能发生键盘按下(key down)等键盘事件。总之,事件指明了对象“什么情况下做?”,常用于定义对象发生某种反映的时机和条件。方法(method)方法是用来控制对象的功能及操作的内部程序。例如,人具有说话、行走、学习、睡觉等功
4、能,在visual basic中,对象所能提供的这些功能和操作,就称作“方法”。以窗体为例,它具有显示(show)或隐藏(hide)的方法。总之,方法指明了对象“能做什么?”,常用于定义对象的功能和操作。属性(property)属性是指用于描述对象的名称、位置、颜色、字体等特征的一些指标。可以通过属性改变对象的特性。有些属性可以在设计时通过属性窗口来设置,不用编写任何代码;而有些属性则必须通过编写代码,在运行程序的同时进行设置。可以在运行时读取和设置取值的属性成为读写属性,只能读取的属性成为只读属性。总之属性指明了对象“是什么样的?”,常用于定义对象的外观。如同上面的内容所描述的,不论您使用u
5、dp协议或是tcp协议,winsock控件都可以允许与远程的设备连接,并且在相互之间交换数据。因此,依据上面的面熟而言,不论您使用的是哪一种协议都可以扮演主机端和客户端的角色。同时,当您在使用winsock控件的过程中,这个控件不会显示在正在执行的窗体之中。换句话说,winsock控件是在后台运行的一种控件。在执行过程之中,不会具有任何选用、可见的控件。那么该如何使用winsock控件呢?它可以被应用在那些类型的应用程序之中呢?以下所列出的内容,是这个控件可以应用的大致范围:*将客户端所收集的数据,传送给主机端。*聊天和文件传输室应用程序。*电子公告栏。*voip(voice over tcp
6、/ip)vb winsock介绍winsock是mcrosoft windows提供的网络编程接口,它供了基于tcp/ip协议接口实现方法.通过网络进行的数据通信,需要用地址来表示网络中的主机.tcp/ip协议使用ip地址来作为主机的标识.实现的连接方式是通过ip地址来识别的.通常情况下每台设备运行的不止一个程序,所以为了使用应用程序间的连接,还需要建立一个地址标识.在tcp/ip中使用端口来作为标识号(port).ip地址+端口地址.tcp:实现提供双向,有序无从复的数据流服务,流量控制+差错检测+纠错等功能.1.vb控件winsock是个运行中不可件的控件,常用属性如下:byte rece
7、ived 接收到的字节数local hostname 本地机器名local ip 本地ip地址local port 本地通信程序的端口remote host 远程机器名remote host ip 远程ip地址remote port 远程通信程序端口socket handle 提供调用api得句柄参数state 连接得当前状态protocol 使用协议bytereceived:反应接收到得数据量,以字节为单位。state:返回当前连接状态0 关闭状态1 打开状态2 监听状态3 连接挂起4 解析域名5 正在连接6 以建立连接7 正在关闭8 出错2.控件accept接受一个连接请求。格式:对象.a
8、ccept request idbind:多协议接口下,把接口卡,ip地址捆绑再一起。格式:对象。bina端口号,ip地址close:关闭连接。格式:对象。closeconnect:发送连接请求。格式:对象。connectip,远程端口getdata:取出数据后清除缓冲区。peekdata:取出数据后不清楚缓冲区。格式:对象。getdata(peekdata)变量,数据类型,最大长度listen:侦听。格式:对象。listensenddata:发送数据。格式:对象。senddata3控件事件close 远程设备关闭连接时触发事件connect 建立连接,进行通信时触发connectreques
9、t 有连接请求时触发data arrival 有数据到达时触发error 错误时触发send complete 完成一次数据传送触发send progress 数据传送进度四、设计内容1、设计框架客户端服务端文件传输消息发送图2 消息文件交互客户端连接端口连接ip服务端图1 建立连接2、设计程序服务端:option explicit /强制声明变量private sub command1_click()if tcp.state = 7 and text2.text <> "" then /winsock=7表示已连接 tcp.senddata text2.tex
10、t /发送数据 text1.text = text1.text & "本机:" & text2.text & vbcrlf /显示自己发送的信息,换行显示 text2.text = "" /文本清空 text2.setfocus /设置焦点 end ifend subprivate sub command2_click()dim form2 as new form2 /定义数据传输窗口form2.show /显示数据传输窗口end subprivate sub form_load()tcp.localport = 8888 /本地
11、监听端口为8888tcp.listen /开始监听end subprivate sub tcp_connectionrequest(byval requestid as long) /连接请求if tcp.state <> 0 then tcp.close /如果不是关闭状态,关闭跳 tcp.accept requested /接收请求id end subprivate sub tcp_dataarrival(byval bytestotal as long) /对方数据到达dim strdata as string /定义字符串型 tcp.getdata strdata /获取数
12、据传递给变量strdata text1.text = text1.text & "客户端:" & strdata & vbcrlf /发送过来的信息,换行显示end sub图3 编辑服务端主窗口客户端:option explicit /强制声明变量private sub command1_click()if tcp.state = 7 and text2.text <> "" then /winsock=7表示已连接 tcp.senddata text2.text /发送数据 text1.text = text1.te
13、xt & "本机:" & text2.text & vbcrlf /显示自己发送的信息,换行显示 text2.text = "" /文本清空 text2.setfocus /设置焦点end if end subprivate sub command2_click()dim form2 as new form2 /定义数据传输窗口form2.show /显示数据传输窗口end subprivate sub tcp_dataarrival(byval bytestotal as long)dim strdata as string /
14、定义strdata为字符串 tcp.getdata strdata /接收数据 text1.text = text1.text & "服务端:" & strdata & vbcrlf /在文本框显示消息,换行显示end subprivate sub zyq2_click()dim p, myip as string /定义p,myip为字符串p = inputbox("输入对方的端口") /输入端口号myip = inputbox("输入对方的ip") /输入iptcp.remoteport = p /设置端口
15、tcp.remotehost = myip /设置iptcp.connect /连接end sub图4 编辑客户端主窗口传输窗口(服务端):option explicitprivate sub cmdsend_click() dim fname_only as string if txtfilename = "" then msgbox "你没有选择要发送的文件.", vbcritical else if frmserver.tcpserver.state <> sckclosed then fname_only$ = getfilename
16、(txtfilename) sendfile fname_only$ end if end ifend sub主要作用:发送用户选择的文件。private sub form_load() tcpserver.localport = port tcpserver.listen binconnection = false status "侦察. (没有连接)"end sub主要作用:设置连接端口并侦察网络。private sub form_unload(cancel as integer) senddata "服务器关闭," pause 500 tcpser
17、ver.close endend subprivate sub tcpserver_close() if tcpserver.state <> sckclosed then tcpserver.close form_load end subprivate sub tcpserver_connectionrequest(byval requestid as long) on error goto iderror if tcpserver.state <> sckclosed then tcpserver.close tcpserver.accept requestid b
18、inconnection = true status "侦察. 连接." senddata "accepted," exit subiderror: msgbox err.description, vbcriticalend sub主要作用:判断是否接收信息。private sub tcpserver_dataarrival(byval bytestotal as long) dim command as string dim newarrival as string dim data as string static datacnt as long t
19、cpserver.getdata newarrival$, vbstring command = evaldata(newarrival$, 1) data$ = evaldata(newarrival$, 2) select case command$ case "openfile" ' open the file dim fname as string fname$ = app.path & "" & data$ open fname$ for binary as #1 status "文件打开. " &a
20、mp; data$ case "closefile" ' close the file close #1 status "文件传输." pause 3000 status "侦察. (连接)" case else ' a 4169 byte string of incoming data put #1, , newarrival$ txtview = txtview & newarrival$ datacnt& = datacnt& + 1 status "recieving data
21、. " & (max_chunk * datacnt&) & " bytes" end selectend sub主要作用:文件传输。private sub cmdbrowse_click() cdopen.showopen if not vbcancel then txtfilename = cdopen.filename end ifend sub主要作用:通过通用对话框打开需要传送的文件。图5 编辑服务端文件传输窗口传输窗口(客户端):private sub cmdconnect_click() breplied = false tc
22、pclient.connect text1.text, 1256 ltime = 0 while (not breplied) and (ltime < 100000) doevents ltime = ltime + 1 wend if ltime >= 100000 then msgbox "找不到服务器!", vbcritical, "connection error" tcpclient.close exit sub end if cmdbrowse.visible = true cmdsend.visible = trueend s
23、ub主要作用:实现与服务器的连接。private sub cmdsend_click() dim fname_only as string if txtfilename = "" then msgbox "你没有选择要发送的文件.", vbcritical else if tcpclient.state <> sckclosed then fname_only$ = getfilename(txtfilename) sendfile fname_only$ end if end ifend sub主要作用:发送文件。private sub tcpclient_dataarrival(byval bytestotal as long) dim command as string dim newarrival as string dim data as string static datacnt as long tcpclient.getdata newarrival$, vbstring command$ = evaldata(newarrival$, 1) data$ = evaldata(n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度餐饮行业冷链配送与质量追溯体系合同3篇
- 郑州科技学院《风景人像基础教程》2023-2024学年第一学期期末试卷
- 2025版互联网金融服务委托理财合同范本库3篇
- 2025年行政合同签订及管理中行政优先权的法律风险防范指南2篇
- 美容院股份转让服务协议(2025版)2篇
- 二零二五版美容美发行业美容院品牌推广服务合同4篇
- 2025年度个人反担保协议样本:教育机构贷款融资专用4篇
- 2025版全面升级危险品物流运输合同范本3篇
- 西安市2025年度汽车租赁企业服务质量评价体系3篇
- 2025年度菜鸟驿站绿色物流体系建设与推广合同3篇
- 圆周率的认识
- 基于SMT求解器的分支条件覆盖测试
- 反骚扰政策程序
- 运动技能学习与控制课件第十一章运动技能的练习
- 射频在疼痛治疗中的应用
- 四年级数学竖式计算100道文档
- “新零售”模式下生鲜电商的营销策略研究-以盒马鲜生为例
- 项痹病辨证施护
- 怀化市数字经济产业发展概况及未来投资可行性研究报告
- 07FD02 防空地下室电气设备安装
- 教师高中化学大单元教学培训心得体会
评论
0/150
提交评论