基于TCP协议编程的网络聊天室
设计容:基于TCP协议編程的方式,编写程序模拟网络聊天室的运行过程。
设计要求:
1-采用C/S模式,基于TCP协议编程的方式,使得各个用户通过服务器 转发实现聊天的功能。
分为两大模块:客户端模块和服务器端模块,
3-客户端模块的主要功能:
1) 登陆功能:用户可以注册,然后选择服务器登入聊天室。
2) 显示用户:将在线用户显示在列表中。
3) 接收信息:能接收其他用户发出的信息。
4) 发送信息:能发出用户要发出的信息。
服务器端模块的主要功能:
1) 检验登陆信息:检査登陆信息是否正确,并向客户端返回登陆信息,如
信息正确。就允许用户登陆。
2) 显示在线状态:将该用户的状态发给各在线用户。
3) 转发聊天信息:将消息转发给所有在线的用户。
编程语言不限。
一、 需求分析
此程序主要分为两部分:服务器端和客户端
服务器端用于提供一个网络端口,等待客户端发出请求,登录到此服务端, 然后进行网络通讯和消息的转发;客户端可通过服务器端的IP地址发送连接请 求,然后登陆聊天室。在服务器端的成员列表栏中会显示在线的所有人,有人退 出聊天室,成员列表会自动除名。整个程序的主体使用了 CSocket类的方法, 实现了网络通讯聊天。整个程序设计为两个部分:服务器(Speakerserver)和客 户端(Speakerclient)。
多人聊天的关健在于要将每个客户端发送过来的消息分发给所有其他客 户端,为了解决这个问题,在服务器程序中建立一个套接口链表,用来保存所有 与客户端建立了连接的服务端口。
设计原理:服务器通过socket。系统调用创建一个Socket数组后(设定 了接受连接客户的最大数目),与指定的本地端口绑定bind。,就可以在端口进 行侦听listen。。如果有客户端连接请求,则在数组中选拝一个空socket,将客 户端地址赋给这个socket,然后登陆成功的客户就可以在服务器上聊天了。
客户端程序相对简单,只要建立一个socket与服务器端连接,成功后通 过这个socket来发送和接收就可以了。
服务器端功能:
1、 初始化socket,创建服务器端。
2、 维护一个链表,保存所有用户的IP地址,端口信息。
3、 接受用户传送来的聊天信息,然后向链表中的所用用户转发。
4、 接受用户传送来的连接判断命令,并向用户发出响应命令。
客户端功能:
客户端界面上的两个文本框,一个用干显示接受的聊天信息,一个用 来接受用户输入的聊天信息。当按下“发送按钮时将信息发送给服务器。
一、概要设计:
服务器 客户端
(设计流程图)
二、详细设计:
服务器端:
1、启动服务器代码:
〃服务器启动时,先创建套接字并绑定端口,再监听此端口。
void CSpeakerServerDlg::OnBnClickedStart()
UINT uPort = G etDlglt emlnt (IDC_PORT);
//创建套接字
ii ( !m_TCPSocketListen.Create(uPort) I
{
m_TraceRicliEdit.TraceString(TEXT(绑定监听端口失敗,请确认该端口没 有被其它程序占 ffl) ,TraceLevel_WarningJ;
return;
}
//监听套接字
ii( !m_TCPSocketListen.Listen())
{
m_TraceRichEdit.TraceString(TEXTC,监听失败 °) JraceLeveLWaming);
return;
UINT uMaxConnect = GetDlgItemInt(IDC_MAX);
//设宣接口
m_TCPSocketListen.SetTCPSocketSemce(tliis);
//更新界面
m_TraceRicliEdit.TraceString(TEXT(,服务器启动成功
”),T raceLeveLNormal);
GetDlgItem(IDC_START)-EnableWindow(FALSE);
GetDlgItem(IDC.STOP)-EnableWindow(TRUE);
}
2、监听端口,收到連接请求,接受的代码:
〃先检验是否在服务器的景接限制,若在,则获取当前客户的IP地址和端口等信息,插入 链表中。
〃为什么要限制连接人数?因为TCP连接是相当占资源的,若不限制连接人数,服务器的 资源不够分配。
void CSpeakerServerDlg: :OnAccept()
〃承我能力
if ( m_TCPSocketItemMap.size() GetDlgltemint(1DC_MAX| )
m_TraceRichEdit.TraceString(TEXT(,服务器承载人数巳
您可能关注的文档
- 摄影基础知识试题库与答案.docx
- 二年级(下册)语文知识点归纳整理.docx
- 直销商离职原因调查问卷.docx
- 近现代国际关系史唐兴贤课后习题答案.docx
- (重要)人教版小学语文三年级(上册)各单元复习资料_全套.docx
- 医疗器械生产车间要点的指南.docx
- 污水处理厂bot项目合同范本.docx
- 数据库系统概论王珊第五版学习笔记.docx
- 正余弦定理的应用_三角形面积公式公开课一等奖.docx
- 板框过滤实验报告.docx
- 小学作文能力提升阶段测试卷.docx
- 聚酰胺装置操作工现场作业安全规程.docx
- 2026版高考英语一轮复习课时提能练2必修1Unit2Englisharoundtheworld练习含解析新人教版.doc
- 2026年聚光太阳能技术发展趋势与挑战分析报告.docx
- 2026年5G在智能安防行业应用场景拓展及产业链发展前景报告.docx
- 2025年电竞行业规范监管趋势分析报告.docx
- 公司光学计量员岗位安全操作规程.docx
- 2026年薄膜太阳能行业技术专利布局与竞争分析.docx
- 2026年航空货运效率提升实践案例研究分析报告.docx
- 2026年5G在智能客服行业应用场景拓展及产业链发展前景报告.docx
最近下载
- 沟通的力量:护理人文案例集锦.pptx VIP
- 2023-2024学年安徽省宣城市七年级(上)期末语文试卷(含详细答案解析).docx VIP
- 护理人文关怀实践案例与反思.docx VIP
- 匆匆那年钢琴谱五线谱.pdf VIP
- 《大学物理》2024-2025学年第一学期期末试卷及答案.docx VIP
- 橡胶和塑料制品加工系统粉尘防爆安全规范.docx VIP
- AQ_4232-2013 塑料生产系统粉尘防爆规范.pdf VIP
- 2024年江苏中职职教高考文化统考语文试卷真题(含答案详解).docx VIP
- GB50469-2016 橡胶工厂环境保护设计规范.pdf VIP
- 新能源电动汽车的充电桩建设与管理.pptx VIP
原创力文档

文档评论(0)