- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机软件及应用]基于TCP的socket编程的聊天工具实现
摘要
沟通是人类社会里不可或缺的一种行为,在信息发达的今天,沟通的方式多种多样,而网络聊天作为一种新的沟通方式,例如MSN、QQ,在现实生活里发挥着重要的作用,网络聊天,已经成为人们生活中一种重要的行为。
学习聊天程序的编程,加深对VC网络技术的认识,对于我们来说也是有着十分重要的意义。理解并掌握对话框编程,学习多种技术的融合,从而提高我们的编程水平。
聊天程序一般由两大部分组成:服务器端聊天程序和客户端聊天程序。服务器端聊天程序负责接收来自客户端的聊天信息,并根据客户端的要求把这些信息发到一个或多个客户中。客户聊天程序则负责建立和维护与服务器端的连接,向服务器发送本客户的聊天内容,同时从服务器接受对方的响应。
功能要求如下:
客户端部分:
手动输入服务器端IP地址和端口号进行连接
发送消息给服务器端并显示服务器端回传的消息
服务器端部分:
手动建立服务器端与客户端的连接请求
接收所有用户发送的消息
向所有在线用户群发消息
目录
1 方案比较与选择 1
1.1 系统分析与设计 1
1.2 程序方案 2
1.2.1 方案一:基于TCP的socket编程 2
1.2.2 方案二:基于UDP(面向无连接)的socket程序 3
1.3 方案比较结果 5
2 程序的编程与实现 6
2.1 项目创建 6
2.2 界面设计 6
2.3 代码编写 6
2.3.1 CClientSocket 7
2.3.2 CServerSocket 17
2.3.3 CMessg 19
2.3.4 CChatDlg 21
3 程序的运行与结果 34
3.1 使用说明 34
3.2 程序功能演示 34
4 讨论及进一步研究建议 38
5 课程设计心得 39
6 Abstract 40
7 参考文献 41
1方案比较与选择
系统分析与设计
系统构架方式如下图所示:
设计出一个完整的网络聊天程序,使之实现以上基本要求。
服务端需要完成的三件事
在特定端口等待连接请求,并需要维护一个客户连接表,已记录所有成功连接。
及时接受消息,然后转发到客户连接。
监控连接状态,客户离开或故障时从列表中删除相应表项,并及时更新连接表。
客户端需要完成的三件事
建立与维护服务器的连接,并随时监测连接状态。
把用户输入的信息及时发送到服务端,同时准备好接受,并显示信息。
在用户退出时关闭连接并保存聊天记录。
程序方案
方案一:基于TCP的socket编程
TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。
创建套接字(socket);
将套接字绑定到一个本地地址和端口上(bind);
将套接字设为监听模式,准备接受客户请求(listen);
等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept);
用返回的套接字和客户端进行通信(send/recv);
返回,等待另一客户请求;
关闭套接字;
客户端程序流程如下:
创建套接字(socket);
向服务器发出连接请求(connect);
和服务器端进行通信(send/recv);
关闭套接字。
在服务器端,当调用accept函数时,程序就会等待,等待客户调用connect函数发出连接请求,然后服务器端接受该请求,于是双方就建立了连接。之后,服务器端和客户端就可以利用send和recv函数进行通信了。因为服务器需要接受客户端的请求,所以必须告诉本地主机它打算在哪个IP地址和哪个端口上等待客户要求,因此必须调用bind函数来实现这一功能。而对客户端来说,当它发起连接请求,服务器端接受请求后,在服务端就保存了改客户端的IP地址和端口的信息。这样,对服务器端来说,一旦建立连接之后,实际上它已经保存了客户端的IP地址和端口号的信息,就可以利用所返回的套接字调用send/recv函数与客户端进行通信。
程序流程图如下:
方案二:基于UDP(面向无连接)的socket程序
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境
服务端程序编写流程如下:
创建套接字(socket);
将套接字绑定到一个本地地址和端口上(bind);
等待接受数据(recvfrom);
关闭套接字。
虽然面向无连接的socket编程无须建立连接,但是为了完成这次通信,对于接受端来说,它必须先启动以接受客户端发送的数据,因此接收端必须告诉主机它是在哪个地址和端口上等待数据的到来,接收端(服务器端)必须调用bind函数将套接字绑定到一个本地地址和端
您可能关注的文档
- [计算机软件及应用]企业云计算应用研究.pdf
- [计算机软件及应用]会计模拟实验报告工商1003-1004.doc
- [计算机软件及应用]人机界面应用2013.ppt
- [计算机软件及应用]会声会影教程.doc
- [计算机软件及应用]信号与系统Lecture16Chapter5-1.ppt
- [计算机软件及应用]修改记录_多路计费器.doc
- [计算机软件及应用]估算专题讲义v5.pdf
- [计算机软件及应用]伤损图谱.doc
- [计算机软件及应用]八刚jsp.ppt
- [计算机软件及应用]储油罐的变位标识与罐容表的标定.doc
- 新生儿消化道出血教案.docx
- 湖南省湘一名校联盟2026届高三上学期12月质量检测数学试题+答案.pdf
- 河南省商丘市2025届初中学业水平考试地理真题(含答案).doc.docx
- 质量检验员中级培训.pdf
- 鲁科版选择性必修二第三章第二节交变电流的产生提升练(有解析).doc.docx
- 黑龙江省牡丹江市第二高级中学2025-2026学年高三上学期第四次阶段性考试数学试题+答案.pdf
- 幼小衔接数学分清左右教案.docx
- 鲁科版选择性必修二第三章第一节 交变电流的特点 提升练(有解析).doc.docx
- 湖南省常德市多校2026届高三上学期第一次模拟考试数学试卷+答案.pdf
- Unit 2 My friends 单元素养培优卷(含答案,含听力原文,无听力音频).doc.docx
最近下载
- 信阳农林学院《公共英语一》2023-2024学年第一学期期末试卷.doc VIP
- 个人征信报告模板征信报告模板(2021带水印).pdf VIP
- 如何做好医患沟通(1)(1).pptx VIP
- 4.4天净沙秋思 教学课件(共29张PPT)(含音频+视频).pptx VIP
- 毕业设计(论文)-基于PLC智能分类垃圾桶设计.docx VIP
- 消防给水管道水压试验方案.docx VIP
- 标准图集-闽2004G104 钢筋混凝土桩基承台.pdf VIP
- 江苏西德电梯图纸一体机KFS25-Y4F-B110(有机房).pdf VIP
- 《桉树更新免炼山造林技术规程》.docx VIP
- 免炼山造林PPT课件.pptx VIP
原创力文档


文档评论(0)