计算机网络课设_基于TCP协议编程的网络聊天室.docx

计算机网络课设_基于TCP协议编程的网络聊天室.docx

基于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(,服务器承载人数巳

文档评论(0)

1亿VIP精品文档

相关文档