1、 TCP/IP 和网络编程课程设计 题目题目:网上聊天网上聊天 姓姓 名名 学学 号号 指导教师指导教师 二零一零年二零一零年 月月 日日 一、一、 系统功能描述系统功能描述 使用 Socket 实现网上聊天功能。用户可以通过客户端连接到服务器端并进行网上聊 天。当然,聊天时可以启动多个客户端。服务器支持多个主题,进入服务器后可选定主题, 启动客户端后,输入服务器的 IP 地址即可。用户聊天必须处于同一个主题中。 二、二、 系统的模块划分系统的模块划分 服务器端: CAboutDlg:生成关于的对话框类 CCChatServerApp:对应用程序进行初始化 CCChatServerDoc、 C
2、CChatServerView:一份文档可以有多个相关的视图,当用户 在文档上打开一个窗口时,框架创建一个视图并将其与文档连接。 CClientSocket:设置非阻塞,将前台的界面处理和后台的网络通信都整合到消息传 递模型。获取输入的用户名,聊天室列表。 CINIFILE:可以读取.修改变量数值,可以设置新的组,新的变量 CMainFrame:创建应用程序主窗口,使之以树菜单保持展开状态 CMyFormView:在程序中应用窗体,可将新窗体插入。 CMyTreeView:将聊天室列表以树形排列,并实现用户发送消息的方法。 CParseMessage:实现信息的传输。 CServerSocke
3、t:实现多个客户端的登录。 CSetServerPortDlg:设定连接的端口。 Message:建立一个结构体,设定房间名、用户名、以及发送内容的类型和长度。 客户端: CChatClientApp:实现客户端与服务器端的连接。 ChatClientDoc:从服务器端获取聊天室内房间的名称的文本。 CClientFormView:初始化房间的名称。 CClientLog:显示上次登录的用户名的对话框。 CConnectServerDlg:客户端与服务器端的连接的对话框。 CIniFile:读取当前目录下的 ini 文件。 CShowMessage:显示其他客户端发送的消息。 CParseMe
4、ssage:用户登录时的所选择登陆端口,IP,用户名的对话框。 CMyTreeView:客户端上显示的树形列表,以及可实现发送消息头像闪动等。 三、三、 调试数据调试数据 首先启动服务器端 分别启动两个客户端,用户名为 A 、B 将两个用户进入同一频道 A 向 B发送消息 B收到消息 回复 A 发送的消息 A 收到 B的消息 四、四、 主要代码主要代码 客户端: if(!m_skMainSocket.Create() AfxMessageBox(“端口创建错误“); return FALSE; int iTryTimes = 0; CString strName; if(!IniFile.Create(“username.ini“,1) AfxMessageBox(“初始化文件不存在“); return FALSE; CString strServerIp; int iServerPort; IniFile.GetV arStr(“USERNAME“,“DEFUALTNAME“,str