- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
基于TCP协议编程网络聊天室
设计内容:基于TCP协议编程方法,编写程序模拟网络聊天室运行过程。
设计要求:
1.采取C/S模式,基于TCP协议编程方法,使得各个用户经过服务器转发实现聊天功效。
2.分为两大模块:用户端模块和服务器端模块。
3.用户端模块关键功效:
1)登陆功效:用户能够注册,然后选择服务器登入聊天室。
2)显示用户:将在线用户显示在列表中。
3)接收信息:能接收其她用户发出信息。
4)发送信息:能发出用户要发出信息。
4.服务器端模块关键功效:
1)检验登陆信息:检验登陆信息是否正确,并向用户端返回登陆信息,如信息正确。就许可用户登陆。
2)显示在线状态:将该用户状态发给各在线用户。
3)转发聊天信息:将消息转发给全部在线用户。
5.编程语言不限。
需求分析
此程序关键分为两部分:服务器端和用户端。
服务器端用于提供一个网络端口,等候用户端发出请求,登录到此服务端,然后进行网络通讯和消息转发;用户端可经过服务器端IP地址发送连接请求,然后登陆聊天室。在服务器端组员列表栏中会显示在线全部些人名单,有些人退出聊天室,组员列表会自动除名。整个程序主体使用了CSocket类方法,实现了网络通讯聊天。整个程序设计为两个部分:服务器(SpeakerServer)和用户端(SpeakerClient)?。
多人聊天关键在于要将每个用户端发送过来消息分发给全部其她用户端,为了处理这个问题,在服务器程序中建立一个套接口链表,用来保留全部与用户端建立了连接服务端口。
设计原理:服务器经过socket()系统调用创建一个Socket数组后(设定了接收连接用户最大数目),与指定当地端口绑定bind(),就能够在端口进行侦听listen()。假如有用户端连接请求,则在数组中选择一个空socket,将用户端地址赋给这个socket,然后登陆成功用户就能够在服务器上聊天了。
用户端程序相对简单,只要建立一个socket与服务器端连接,成功后经过这个socket来发送和接收就能够了。
服务器端功效:
初始化socket,创建服务器端。
维护一个链表,保留全部用户IP地址,端口信息。
接收用户传送来聊天信息,然后向链表中所用用户转发。
接收用户传送来连接判定命令,并向用户发出响应命令。
用户端功效:
用户端界面上两个文本框,一个用于显示接收聊天信息,一个用来接收用户输入聊天信息。当按下“发送”按钮时将信息发送给服务器。
概要设计:
服务器用户端
(设计步骤图)
具体设计:
服务器端:
1、开启服务器代码:
//服务器开启时,先创建套接字并绑定端口,再监听此端口。
voidCSpeakerServerDlg::OnBnClickedStart()
{
UINTuPort=GetDlgItemInt(IDC_PORT);
//创建套接字
if(!m_TCPSocketListen.Create(uPort))
{
m_TraceRichEdit.TraceString(TEXT(绑定监听端口失败,请确定该端口没有被其它程序占用),TraceLevel_Warning);
return;
}
//监听套接字
if(!m_TCPSocketListen.Listen())
{
m_TraceRichEdit.TraceString(TEXT(监听失败),TraceLevel_Warning);
return;
}
UINTuMaxConnect=GetDlgItemInt(IDC_MAX);
//设置接口
m_TCPSocketListen.SetTCPSocketService(this);
//更新界面
m_TraceRichEdit.TraceString(TEXT(服务器开启成功),TraceLevel_Normal);
GetDlgItem(IDC_START)-EnableWindow(FALSE);
GetDlgItem(IDC_STOP)-EnableWindow(TRUE);
}
2、监听端口,收到连接请求,接收代码:
//先检验是否在服务器最大连接限制内,若在,则获取目前用户IP地址和端口等信息,插入链表中。
//为何要限制连接人数?因为TCP连接是相当占资源,若不限制连接人数,服务器资源不够分配。
voidCSpeakerServerDlg::OnAccept()
{
//承载能力
if(m_T
您可能关注的文档
最近下载
- SY_T 4106-2016 钢质管道及储罐无溶剂聚氨酯涂料防腐层技术规范.docx VIP
- 行业测评 【机场】2025年第二季度机场服务测评报告发布.docx
- 《矩阵论》研究生教学课件.ppt VIP
- 预防心血管疾病的膳食指南.pptx VIP
- 公司C-TPAT程序文件全套.doc VIP
- BS EN 13749-2011铁路应用 — 轮对和转向架 — 转向架结构要求的规定方法(中文版).doc VIP
- 中国高钙石灰石行业市场调查研究及发展战略研究报告.docx
- 植保无人机驾驶员应急处置考核试卷及答案.docx VIP
- 防错法考试题及答案.doc VIP
- 贵州省2025年基础教育质量提升普通高中教学检测生物.docx VIP
有哪些信誉好的足球投注网站
文档评论(0)