




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档HUNAN CITY UNIVERSITY 网络协议编程课程设计说明书 设计题目: 基于多线程的网络聊天控制台软件的设计与实现 专 业: 网 络 工 程 学生姓名: 朱江 班级学号: 1206102-21 分组成员:1206102-06郭辉超1206102-18曾涛1206102-21朱江 指导教师: 黄雪华老师 汪彦老师 2015 年 07月 03日网络协议编程课程设计报告学号:1206102-21 姓名:朱江一、设计时间2015年06月29日-07月03日。二、设计地点湖南城市学院信息楼507机房。三、设计目的1、巩固网络协议编程课程涉及的基本知识,培养灵活运用知识进行独立设计的能力;2、掌握TCP/IP网络程序框架、Winsock API、高级网络编程API的使用;3、提高综合运用所学的理论知识独立分析和解决问题的能力;4、进一步熟悉利用Visual C+6.0进行开发的能力;5、培养查阅资料,独立思考问题的能力。四、设计小组成员1206102-06 郭辉超,1206102-18 曾涛,1206102-21 朱江。五、指导老师黄雪华老师、汪彦老师。六、设计课题经过小组大部分组员的讨论,决定选取选题(基于多线程的网络聊天控制台软件的设计与实现),编写一个基于局域网的多线程控制台聊天系统。理由:1、此系统要求采用C/S模式实现,有利于进一步深刻理解和掌握这种基本的网络编程模式。2、该系统功能相对简单,易于实现,适于初学者。3、该系统牵涉到Winsock编程,需要灵活运用这些知识解决实际问题,有利于培养网络系统开发的实际动手能力。七、基本思路及关键问题的解决方法设计思路 对于聊天程序,一般都是采用 C/S 模式,即服务器/客户端的模式来设计。这样的模式有利于用户的操作和更好的用户体念。而客户端的设计主要关注与用户的体念和操作方便,其网络设计比较简单;服务器则要完成大量的客户控制、数据转发等操作,设计起来相对更加复杂。总体设计 聊天程序是一个典型的网络程序,而网络程序的设计大多 是基于 TCP/IP协议来实现的, TCP/IP协议是一个4层协议族,如图1所示。 聊天程序主要是依赖于传输层来实现,在传输层中有两个重要的协议:TCP协议和UDP协议。其中TCP协议(传输控制协议)是一个面向连接的协议,本协议在进行网络传输过程中首先必须建立一个安全的连接(通常是采用3次握手来实现的),UDP(用户数据报协议)是一种无连接的协议,本协议在进行数据传输前不用建立点对点的连接,所传输的数据不会进行安全检查,如果有丢包的现象也不会重发,本文所涉及的聊天程序采用TCP 协议来实现由于每个电脑可能会有多个服务,而每个服务都采用同一个IP地址来进行收发数据,所以就必须采用一种机制来实现对每个服务的区分这就是端口,对于同一IP地址的不同端口号就代表了不同的服务,所以对于网络聊天程序的服务器端必须设定一个端口号,而客户端则必须连接到服务器端的IP和其指定的端口,如图2所示。 在本文的聊天程序中,采用客户端发送数据-服务器接收数据-服务器转发数据-客户端接收数据的流程来完成。由于该程序是一个服务器和多个客户端进行聊天的,所以在这里就必须注意以下几个问题: 服务器需要监控端口,以便客户的随时连接;服务器需要监控数据流,以便随时接受来自客户端发来的数据;为了实现客户点对点的聊天, 则将为每个客户建立一个线程。服务器设计 服务器设计主要难点是对多线程的设计, 在这里主要涉及 到三方面的内容:一是对客户端接入的监控,需要一个线程来完成;二是分别为每个客户端创建一个线程,用于收发数据,使客户端之间不会彼此干扰;三是每个客户端产生的线程对数据输入流进行监控,随时准备接收数据。对于数据则应该采用数据包的形式来进行封装,分别由发送者的地址,接收者的地址和数据构成,其中地址由昵称、IP和端口构成。当服务器接收到该数据后,将这些数据向每个客户端都发送出去,由客户端来决定是否接收该数据。所示:另外,当客户端连接到服务器时,将向服务器发送一个数据包,服务器从数据包里面提取出客户端的地址信息和昵称,并且根据这些信息生成一张地址信息和昵称的对照表,且将这张表群发给每个客户;当有客户退出连接时,服务器则从对照表中将该客户的信息删除,并且群发该表给所有客户,该表的形式如下:地址昵称 127.0.0.1 朱江 客户端设计对于客户端的设计则比服务器简单得多,主要是从界面等方便用户操作的角度来考虑。客户端主要需要完成连接服务器、数据收发等功能。对于数据收发功能主要通过数据流来实 现。8、 算法及流程图9、 调试过程中出现的问题及相应解决办法1.一开始在客户端与服务器进行通信时,只有服务器能看见客户端的消息,而客户端看不见服务器发的消息,之后我们发现这是因为在客户端接受消息的代码少了,在补全之后,双方都能接收信息。2.之后我们想给这个段代码多添加一些其他的功能,首先添加时间,在此过程中我们一开始准备使用CTime t=CTime.getCurrentTime();这个方法,可是除了一些我们没能解决问题,后来经过询问老师和查询资料,最终我们使用了源程序中的获取时间的代码。10、 课程设计心得体会 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程,通过实验学习和领悟,充分的熟悉了VC+的运用和操作,并顺利完成实验,增强自身团队协作意识。11、 源程序客户端#include stdafx.h#include #include #pragma comment(lib,WS2_32.lib)#include #include SOCKET sockclient;sockaddr_in sockaddrclient;char sendbuf100;char tempbuf100;char recvbuf100;int len=sizeof(SOCKADDR_IN);DWORD WINAPI SendProc( LPVOID lpParameter / thread data);void main() /* *1.加载套接字,创建套接字(WSAStartup(),socket())* */ time_t tt = time(NULL);/这句返回的只是一个时间cuo tm* t= localtime(&tt); WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) return; if ( LOBYTE( wsaData.wVersion ) != 2 | HIBYTE( wsaData.wVersion ) != 2 ) WSACleanup( ); return; sockclient=socket(AF_INET,SOCK_DGRAM,0); /*2.向服务器发送数据(sendto)。*/ sockaddrclient.sin_addr.S_un.S_addr=inet_addr(127.0.0.1); sockaddrclient.sin_family=AF_INET; sockaddrclient.sin_port=htons(6000); / HANDLE Hsend=CreateThread(NULL,0,SendProc,NULL,0,NULL); CloseHandle(Hsend); while(1) recvfrom(sockclient,recvbuf,100,0,(sockaddr*)&sockaddrclient,&len); if(*recvbuf) sprintf(tempbuf,%s:%s,inet_ntoa(sockaddrclient.sin_addr),recvbuf); printf(%d-%02d-%02d %02d:%02d:%02d, t-tm_year + 1900, t-tm_mon + 1,t-tm_mday,t-tm_hour,t-tm_min,t-tm_sec); printf( ); printf(%sn,tempbuf); /* /3.关闭套接字。inet_ntoa() */DWORD WINAPI SendProc( LPVOID lpParameter / thread data) while(1) gets(sendbuf); sendto(sockclient,sendbuf,100,0,(sockaddr*)&sockaddrclient,len); return 0;服务器#include stdafx.h#include #include #pragma comment(lib,WS2_32.lib)#include sockaddr_in sock;char recvbuf100;char sendbuf100;char tempbuf100;int len=sizeof(sockaddr);sockaddr_in SockAddr;SOCKET ServerSock;DWORD WINAPI SendProc( LPVOID lpParameter / thread data);void main() /* *1.加载套接字,创建套接字(WSAStartup(),socket())* */ time_t tt = time(NULL);/这句返回的只是一个时间cuo tm* t= localtime(&tt); WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) return; if ( LOBYTE( wsaData.wVersion ) != 2 | HIBYTE( wsaData.wVersion ) != 2 ) WSACleanup( ); return; ServerSock=socket(AF_INET,SOCK_DGRAM, IPPROTO_UDP); /* *2.将套接字绑定到一个本地地址和端口上(bind())。 */ SockAddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY); SockAddr.sin_family=AF_INET; SockAddr.sin_port=htons(6000);/ SockAddr.sin_zero= bind(ServerSock,(sockaddr*)&SockAddr,sizeof(sockaddr_in); /* *3.等待接收数据(recvfrom)。 */ HANDLE Hsend=CreateThread(NULL,0,SendProc,NULL,0,NULL); CloseHandle(Hsend); while(1) recvfrom(ServerSock,recvbuf,100,0,(sockaddr*)&sock,&len); if(*recvbuf) sprintf(tempbuf,%s:%s,inet_ntoa(sock.sin_addr),recvbuf); printf(%d-%02d-%02d %02d:%02d:%02d, t-tm_year + 1900, t-tm_mon + 1,t-tm_mday,t-tm_hour,t-tm_min,t-tm_sec); printf( ); printf(%sn,tempbuf); DWORD WINAPI SendProc( LPVOID lpParameter / thread data) while(1) gets(sendbuf); sendto(ServerSo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 青岛港湾职业技术学院《算法与数据结构》2023-2024学年第一学期期末试卷
- 东华大学《数学拓展课程》2023-2024学年第一学期期末试卷
- 人工智能时代拔尖创新人才发现机制与培养模式创新研究
- 武汉电力职业技术学院《美国文学史及作品读》2023-2024学年第一学期期末试卷
- 重庆健康职业学院《房地产营销管理》2023-2024学年第一学期期末试卷
- 广东科技学院《数学分析(1)》2023-2024学年第一学期期末试卷
- 遂宁能源职业学院《欧美设计规范释义二》2023-2024学年第一学期期末试卷
- 南京信息职业技术学院《建筑结构试验与测试技术》2023-2024学年第一学期期末试卷
- 安徽工业职业技术学院《外国性格舞》2023-2024学年第一学期期末试卷
- 武汉民政职业学院《体育中的审美》2023-2024学年第一学期期末试卷
- 哮喘的治疗与护理讲课件
- 部编版语文五年级下册全册复习知识汇-总
- 2025年河北地矿中地建设有限公司招聘笔试参考题库含答案解析
- 常见护理工作应急预案及流程
- 2025年聊城市茌平区高铁建设发展有限公司招聘笔试参考题库含答案解析
- 湖南省长沙市宁乡市2024-2025学年三年级下学期6月期末科学试卷(含答案)
- 2025五年级道德与法治下册期末综合测试卷(含答案)
- 2025至2030中国房产证抵押贷款行业市场深度分析及投资与前景预测报告
- 2025至2030中国LNG运输行业市场发展分析及前景预测与战略规划报告
- GM/T 0021-2023动态口令密码应用技术规范
- 湘教版七年级数学下册期末考试卷(含答案与解析)
评论
0/150
提交评论