计算机网络课设-基于tcp协议编程的网络聊天室

计算机网络课设-基于tcp协议编程的网络聊天室

ID:23818584

大小:96.51 KB

页数:25页

时间:2018-11-10

计算机网络课设-基于tcp协议编程的网络聊天室_第1页
计算机网络课设-基于tcp协议编程的网络聊天室_第2页
计算机网络课设-基于tcp协议编程的网络聊天室_第3页
计算机网络课设-基于tcp协议编程的网络聊天室_第4页
计算机网络课设-基于tcp协议编程的网络聊天室_第5页
资源描述:

《计算机网络课设-基于tcp协议编程的网络聊天室》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于TCP协议编程的网络聊天室设计内容:基于TCP协议编程的方式,编写程序模拟网络聊天室的运行过程。设计要求:1.采用C/S模式,基于TCP协议编程的方式,使得各个用户通过服务器转发实现聊天的功能。2.分为两大模块:客户端模块和服务器端模块。3.客户端模块的主要功能:1)登陆功能:用户可以注册,然后选择服务器登入聊天室。2)显示用户:将在线用户显示在列表中。3)接收信息:能接收其他用户发出的信息。4)发送信息:能发出用户要发出的信息。4.服务器端模块的主要功能:1)检验登陆信息:检查登陆信息是否正确,并向客户端返回登陆信息,如信息正确。就允许用户登陆。2)显示在

2、线状态:将该用户的状态发给各在线用户。3)转发聊天信息:将消息转发给所有在线的用户。5.编程语言不限。一、需求分析此程序主要分为两部分:服务器端和客户端。服务器端用于提供一个网络端口,等待客户端发出请求,登录到此服务端,然后进行网络通讯和消息的转发;客户端可通过服务器端的IP地址发送连接请求,然后登陆聊天室。在服务器端的成员列表栏中会显示在线的所有人名单,有人退出聊天室,成员列表会自动除名。整个程序的主体使用了CSocket类的方法,实现了网络通讯聊天。整个程序设计为两个部分:服务器(SpeakerServer)和客户端(SpeakerClient) 。多人聊天

3、的关键在于要将每个客户端发送过来的消息分发给所有其他客户端,为了解决这个问题,在服务器程序中建立一个套接口链表,用来保存所有与客户端建立了连接的服务端口。设计原理:服务器通过socket()系统调用创建一个Socket数组后(设定了接受连接客户的最大数目),与指定的本地端口绑定bind(),就可以在端口进行侦听listen()。如果有客户端连接请求,则在数组中选择一个空socket,将客户端地址赋给这个socket,然后登陆成功的客户就可以在服务器上聊天了。客户端程序相对简单,只要建立一个socket与服务器端连接,成功后通过这个socket来发送和接收就可以了

4、。服务器端功能:1、初始化socket,创建服务器端。2、维护一个链表,保存所有用户的IP地址,端口信息。3、接受用户传送来的聊天信息,然后向链表中的所用用户转发。4、接受用户传送来的连接判断命令,并向用户发出响应命令。客户端功能:客户端界面上的两个文本框,一个用于显示接受的聊天信息,一个用来接受用户输入的聊天信息。当按下“发送”按钮时将信息发送给服务器。一、概要设计:服务器客户端(设计流程图)一、详细设计:服务器端:1、启动服务器代码://服务器启动时,先创建套接字并绑定端口,再监听此端口。voidCSpeakerServerDlg::OnBnClickedS

5、tart(){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;}UI

6、NTuMaxConnect=GetDlgItemInt(IDC_MAX);//设置接口m_TCPSocketListen.SetTCPSocketService(this);//更新界面m_TraceRichEdit.TraceString(TEXT("服务器启动成功"),TraceLevel_Normal);GetDlgItem(IDC_START)->EnableWindow(FALSE);GetDlgItem(IDC_STOP)->EnableWindow(TRUE);}2、监听端口,收到连接请求,接受的代码://先检验是否在服务器的最大连接限制内,若在,

7、则获取当前客户的IP地址和端口等信息,插入链表中。//为什么要限制连接人数?因为TCP连接是相当占资源的,若不限制连接人数,服务器的资源不够分配。voidCSpeakerServerDlg::OnAccept(){//承载能力if(m_TCPSocketItemMap.size()>GetDlgItemInt(IDC_MAX)){m_TraceRichEdit.TraceString(TEXT("服务器承载人数已满,已过滤其他连接"),TraceLevel_Warning);return;}//绑定套接字CTCPSocketService*pTCPSocketC

8、onnect=newCT

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。