ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:169.55KB ,
资源ID:9251021      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9251021.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(winsock网络变成.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

winsock网络变成.docx

1、winsock网络变成成绩南京工程学院课程设计说明书(论文)题 目 WINSOCK网络程序聊天室的设计 课 程 名 称 网络应用与开发 院(系、部、中心) 计算机工程学院 专 业 网络工程 班 级 网络工程111 学 生 姓 名 单帆 学 号 202110512 设 计 地 点 信息楼 指 导 教 师 毛云贵 设计起止时间:2014 年1月 6日至2014年 1月10日1. 引言计算机网络技术发展至今已经大大超越了人们当初的预想,无论是人们日常的工作还是学习,我们都越来越多的依靠到互联网。各种实时性的聊天娱乐软件也同时诞生,而且为我们的即时通讯带来了众多的方便,比如说大家所熟知的腾讯QQ、微软

2、的MSN、移动的Fetion等,都是做的比较成功的实时聊天工具。随着网络的日益普及,各种聊天工具也层出不穷,但当我们学习了TCP/IP协议与网络编程这门课程之后,我们便会觉得,其实要实现简单的网络通讯其实并不难。接下来的课程设计就是针对一个简单的网络聊天程序,利用MFC为开发工具,实现基本的通讯功能。1.1聊天室程序的开发背景近年来,互连网发展日新月异,网络使空间的距离不再成为人们沟通的障碍,世界各个角落的人们可以通过Internet收发邮件、实时聊天、获取最新的资讯。因此本次毕业设计以“面向连接的Winsock网络会话程序开发”为题,制作一个C/S聊天室程序,通过制作该程序还能更好的学习网络

3、socket编程的相关知识。 1.2聊天室的设计目标 本课题是建立聊天通信模型,设计一个聊天室软件,包括服务器端和客户端。服务器端功能:1、 初始化socket, 创建服务器端。2、 维护一个数组,保存所有用户的IP地址、端口信息。3、 接受用户传送来的聊天信息,然后向数组中的所用用户转发。4、 接受用户传送来的连接判断命令,并向用户发出响应命令。客户端功能: 客户端界面的上面部分,是链接服务器的,输入服务器的ip地址和端口号,点解链接,即进行链接。 客户端界面上的两个文本框,一个用于显示接受的聊天信息,一个用来接受用户输入的聊天信息。当按下“发送”按钮时将信息发送给服务器。 2. 总体设计

4、2.1 功能要求 支持多个客户端的连接,在服务器和多个客户端之间进行数据传输; 接收客户端发送的消息,并显示在一个列表框中; 在用户连接上后有提示,显示出连接的用户名字; 发送信息时可以显示聊天的所有记录;2.3系统主要功能和主要功能描述:服务器端聊天程序必须能够做3件事情:(1) 服务器聊天程序要在待定的端口上等待来自聊天客户的连接请求,并且需要维护一个客户连接表,以记录所有成功的连接。(2) 服务器聊天程序要及时接受从各个聊天客户发送过来的信息,然后把这些信息转发到一个或多个客户连接。对于公共聊天室,服务器将把接受到的信息向除源端外的所有客户发送过去。(3) 服务器还要监控这些连接的状态,

5、在客户主动离开或发生故障时从列表中删除相应的表项,并及时更新连接表。客户端聊天程序需要完成以下几个功能:(1) 客户端聊天程序要负责建立和维护与服务器的连接,通过获取用户的设置尝试与服务器的连接,并且随时检测连接的状态。(2) 客户端聊天程序要把用户输入的信息及时发送到聊天服务器。一般情况下,当用户输入一行信息并且按下回车键后聊天程序就要把这一行信息发送出去,才能及时地满足用户的交互需求。(3) 要随时准备好接受来自服务器的信息,随时把接受到的信息显示出来,让用户及时看到对方的响应。(4) 在用户退出聊天过程是要关闭与服务器的连接。比较好的做法是提前通知服务器或者直接给服务器发送一条退出通知,

6、使得服务器能够及时掌握客户端的连接状态,把对方客户的退出信息及时发送到对等实体上。客户端聊天程序需要使用一个通过CSocket类派生出来的CChatSocket类来实现。该套接字用来发送一个与服务器的连接请求和维持与服务器的连接,发送和接收聊天信息,完成上述各项功能。3. 详细设计3.1设计流程图3.2客户端的实现(1)首先启动Visual C+ 6.0,利用MFC AppWizardEXE建立一个新的MFC工程,工程名为tcpclient,在MFC AppWizard Step1的时候选择Dialog based 即基于对话框,在Step4时勾选Windows Sockets选项(如图3.1

7、1),其他默认值下一步。图3.11 MFC的设置 (2)客户端主要分为三个窗口,第一个是连接窗口,需要输入连接到服务器的相关设置信息;第二个是聊天信息显示窗口,该窗口显示登录服务器以来发送和接收到的消息;第三个是消息编辑发送窗口,需要输入你要发送的信息内容并发送。 新建一个对话框,并添加各种控件(见控件表3.1)如下图:图3.12 聊天窗口布局表3.1 控件类型及各自ID标题控件类型控件ID服务器IP: StaticIDC_STATIC文本框1:EditIDC_EDIT1服务器端口号:StaticIDC_STATIC文本框2:EditIDC_EDIT2昵称:StaticIDC_STATIC文本

8、框3:EditIDC_EDIT3登录:ButtonIDC_connect信息区:StaticIDC_STATIC发送:ButtonIDC_send文本框4EditIDC_EDIT4其中 文本框1:服务器IP; 文本框2:端口号; 文本框3:昵称; 文本框4:发送的消息(3)服务器IP编辑框控件IDC_EDIT1对应的成员变量为OnChangeEdit1 端口号编辑框控件IDC_EDIT2对应的成员变量为OnChangeEdit2 昵称编辑框控件IDC_EDIT3对应的成员变量为OnChangeEdit3 消息编辑区编辑框控件IDC_EDIT4对应的成员变量为OnChangeEdit4(4)下面

9、重点介绍一下单击连接服务器按钮时的处理网络连接的函数。代码设置如下:void CTcpclientDlg:Onconnet() / TODO: Add your control notification handler code here if(clconect) clconect.Close(); CString ipstr,portstr; int port; GetDlgItemText(IDC_EDIT1,ipstr); GetDlgItemText(IDC_EDIT2,portstr); GetDlgItemText(IDC_EDIT5,clientname); portstr.Tr

10、imLeft(); portstr.TrimRight(); port=atoi(portstr); if(port0&portEnableWindow(false); cw=GetDlgItem(IDC_EDIT2); cw-EnableWindow(false); cw=GetDlgItem(IDC_connet); cw-EnableWindow(false); cw=GetDlgItem(IDC_EDIT5); cw-EnableWindow(false); SetDlgItemText(IDC_EDIT3,已设名字+clientname+rn连接服务器成功); CString ent

11、erinfo=clientname+进入聊天室; int len=enterinfo.GetLength(); clconect.Send(enterinfo,len); else clconect.Close(); MessageBox(连接失败,请检查IP与端口是否与服务器一致!或者服务器没打开,连接错误,MB_ICONERROR); else MessageBox(端口或IP输入有误,请重新输入); 设计步骤:创建字符串ipstr(保存IP),portstr(保存端口),clientname(用户名),整型port(端口号)。利用GetDlgItemText将各个编辑框中的信息赋给相应的

12、变量。监视端口号和IP格式并设置相应错误提示(如下图)。 图3.13 连接错误提示图3.14 端口或IP错误提示创建套接字clconect,设置成功创建后相关控件为只读(避免误操作)。设置建立连接后相应提示。(5)接下来就是对话框中的发送(回车)按钮的函数,代码设置如下:void CTcpclientDlg:Onsend() CString str; GetDlgItemText(IDC_EDIT4,str); str=clientname+:+str; int len=str.GetLength(); if(clconect.Send(str,len)1)SetDlgItemText(IDC

13、_EDIT4,); 定义字符串str用于保存输入的消息,调整格式后使用CSocket的操作函数send将消息发送到服务器。(6)要显示客户端接收到来自服务器其他用户的信息,代码设置如下:void CTcpclientDlg:onrev() CString str,str1; char ss256; for(int j=0;jLineScroll(ce-GetLineCount()-1);设计步骤:创建字符串str、str1,字符数组ss。接受来自服务器套接字的信息数据保存到ss中,调整格式后将其打印到消息区。(7)当与服务器断开连接时弹出警告,如下图: 图3.15 失去连接提示代码设置如下:v

14、oid CTcpclientDlg:oncl() MessageBox(失去连接或者找不到服务器); CWnd *cw=GetDlgItem(IDC_EDIT1); cw-EnableWindow(true); cw=GetDlgItem(IDC_EDIT2); cw-EnableWindow(true); cw=GetDlgItem(IDC_connet); cw-EnableWindow(true); cw=GetDlgItem(IDC_EDIT5); cw-EnableWindow(true);当失去与服务器的连接后,重新将连接服务器设置编辑框启用等待下次连接。(8)在退出程序时的提示,

15、如下图:图3.16 退出确认代码设置如下:void CTcpclientDlg:OnClose() int confirm=MessageBox(确定退出吗,请确定,MB_YESNO|MB_ICONQUESTION); if(confirm=IDYES) CString enterinfo=clientname+退出了聊天室; int len=enterinfo.GetLength(); clconect.Send(enterinfo,len); CDialog:OnClose(); 设计步骤:当退出程序时,弹出确认对话框。当选择“是”时,将用户退出信息发送至服务器并关闭对话框。3.3服务端的

16、实现(1)和客户端一样,仍然建立一个基于对话框的工程,工程名为tcpserver,同样,注意一定不要忘记在Step4时勾选Windows Sockets选项。其他默认下一步。(2)客户端主要分为三个窗口,第一个是服务器信息设置窗口,需要输入服务器的相关设置信息;第二个是聊天信息显示窗口,该窗口显示启动服务器以来发送和接收到的消息;第三个是消息编辑发送窗口,需要输入你要发送的信息内容并发送。新建一个对话框,并添加各种控件(见控件表3.2)如下图: 图 3.21表3.2 控件类型及各自ID标题控件类型控件ID服务器信息设置StaticIDC_STATIC服务器IP地址:StaticIDC_STAT

17、IC服务器端口:StaticIDC_STATIC设置:ButtonIDC_set取消:ButtonIDC_cancel文本框1EditIDC_EDIT1文本框2EditIDC_EDIT2其中, 编辑框1: 服务器的IP地址;编辑框2:服务器端口号(3)服务器IP地址编辑框控件IDC_EDIT1对应的成员变量为OnChangeEdit1 端口号编辑框控件IDC_EDIT2对应的成员变量为OnChangeEdit2 (4)下面重点介绍一下单击设置服务器按钮时的处理网络连接的函数。代码设置如下:void CTcpseverDlg:Onlisten() / Beep(2000,100); CStrin

18、g ipstr,portstr; int port; GetDlgItemText(IDC_EDIT3,ipstr); severname=ipstr; GetDlgItemText(IDC_EDIT4,portstr); portstr.TrimLeft(); portstr.TrimRight(); port=atoi(portstr); if(port0&portEnableWindow(false); cw=GetDlgItem(IDC_EDIT4); cw-EnableWindow(false); cw=GetDlgItem(IDC_listen); cw-EnableWindow(

19、false); cw=GetDlgItem(IDC_EDIT1); cw-SetWindowText(服务器名:+severname+rn等待用户连接,监听端口:+portstr+.); else MessageBox(设置监听端口失败,端口可能被其它程序占用); cslisten.Close(); else MessageBox(端口输入有误,请重新输入); 设计步骤:创建字符串ipstr(保存IP),portstr(保存端口),整型port(端口号)。利用GetDlgItemText将各个编辑框中的信息赋给相应的变量。监视端口号和IP格式并设置相应错误提示(如下图)。 图 3.22 图 3

20、.23设置建立连接后相应提示。(5)要显示服务器接收到来自客户端其他用户的信息,代码设置如下:void CTcpseverDlg:onrev(int mynum) CString str,str1;int i; char ss100; for(int j=0;j100;j+) ssj=0; csrevmynum.Receive(ss,100); str.Format(%s,ss); for(i=1;iLineScroll(ce-GetLineCount()-1);设计步骤:创建字符串str、str1,字符数组ss。接受来自服务器套接字的信息数据保存到ss中,调整格式后将其打印到消息区。(6)当

21、有新用户进入时,显示“XXX进入”。代码如下:void CTcpseverDlg:onac() CString str1,str; GetDlgItemText(IDC_EDIT1,str1); CString str2=rn进入; str=str1+str2; SetDlgItemText(IDC_EDIT1,str); cslisten.Accept(csrev+csnum); csrevcsnum.setp(this,csnum);(7)在退出程序时的提示,如下图:图3.24 退出确认代码设置如下:void CTcpseverDlg:OnClose() CString str=服务器即将

22、退出; int confirm=MessageBox(确定退出服务器?所有用户都将断开,请确定,MB_YESNO|MB_ICONQUESTION); if(confirm=IDYES) int len=str.GetLength(); for(int i=1;i=csnum;i+) if(csrevi) csrevi.Send(str,len); str=severname+退出,与服务器连接已断开; len=str.GetLength(); for( i=1;i=csnum;i+) if(csrevi) csrevi.Send(str,len); CDialog:OnClose(); 设计步

23、骤:当退出程序时,弹出确认对话框。当选择“是”时,将服务器关闭信息发送至各个客户端并关闭对话框。4.心得体会:通过本课题的设计,可以比较深入的了解和掌握WINSOCK控件基本属性、方法和事件,理解网络聊天通信的概念,输控制协议(TCP)进行数据交流,初步掌握网络聊天通信程序的设计方法。并能巩固和扩展大学期间的学习内容,进行项目的设计开发训练,更好的适应社会的需求。5.参考文献1、钟军.VB网络高级编程. 北京:人邮出版,19982、汪晓平.VC+6.0开发网络典型应用实例导航. 北京:人邮出版社,20063、刘海英.VC+6.0网络通信编程实用案例精选. 北京:人邮出版社,20064、Anth

24、ony Jones.windows网络编程. 北京:清华大学出版社,2002总结:优秀:课程设计期间不迟到不早退。做了充足的准备工作,与专业相关知识能紧密联系。系统功能非常全面,完全达到设计要求。课程设计报告条理清晰,书写规范,图文并茂,报告内容全面,主要内容阐述详细。认识体会深刻,很好地达到了课程设计的目的。良好:课程设计期间不迟到不早退。为设计工作做了充足的准备工作,与专业相关知识能较紧密联系。系统功能较全面,达到设计要求。课程设计报告条理清晰,书写规范,图文并茂,报告内容较全面,主要内容阐述较详细。认识体会较深刻,较好地达到了课程设计的目的。中等:课程设计期间偶尔会迟到和早退。设计工作准

25、备基本充足,与专业相关知识能基本能联系。系统功能达到设计要求。课程设计报告条理清晰,书写较规范,报告内容较全面,能用部分图片展示相关内容,主要内容阐述较详细。认识体会较好,达到了课程设计的目的。及格:课程设计期间偶尔会早退和迟到。设计工作准备不够充足,与专业相关知识基本能联系。系统功能基本达到设计要求。课程设计报告条理基本清晰,书写基本规范,报告内容基本全面,主要内容阐述基本详细。认识体会不太深刻,基本达到课程设计的目的。不及格:课程设计期间经常迟到早退。设计工作准备不够充足,与专业相关知识不能紧密联系。课程设计报告条理不清晰,书写不规范,报告内容不全面,主要内容阐述不详细。认识体会不深刻,未能达到课程设计的目的。课程设计综合成绩评定: 教师评阅:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1