TCPIP网络聊天课程设计.doc
《TCPIP网络聊天课程设计.doc》由会员分享,可在线阅读,更多相关《TCPIP网络聊天课程设计.doc(13页珍藏版)》请在三一办公上搜索。
1、TCP/IP和网络编程课程设计题目:网上聊天姓名学号 指导教师二零一零年月日一、 系统功能描述使用Socket实现网上聊天功能。用户可以通过客户端连接到服务器端并进行网上聊天。当然,聊天时可以启动多个客户端。服务器支持多个主题,进入服务器后可选定主题,启动客户端后,输入服务器的IP地址即可。用户聊天必须处于同一个主题中。二、 系统的模块划分服务器端:CAboutDlg:生成关于的对话框类CCChatServerApp:对应用程序进行初始化CCChatServerDoc、 CCChatServerView:一份文档可以有多个相关的视图,当用户在文档上打开一个窗口时,框架创建一个视图并将其与文档连
2、接。CClientSocket:设置非阻塞,将前台的界面处理和后台的网络通信都整合到消息传递模型。获取输入的用户名,聊天室列表。CINIFILE:可以读取.修改变量数值,可以设置新的组,新的变量CMainFrame:创建应用程序主窗口,使之以树菜单保持展开状态CMyFormView:在程序中应用窗体,可将新窗体插入。CMyTreeView:将聊天室列表以树形排列,并实现用户发送消息的方法。CParseMessage:实现信息的传输。CServerSocket:实现多个客户端的登录。CSetServerPortDlg:设定连接的端口。Message:建立一个结构体,设定房间名、用户名、以及发送内
3、容的类型和长度。客户端:CChatClientApp:实现客户端与服务器端的连接。ChatClientDoc:从服务器端获取聊天室内房间的名称的文本。CClientFormView:初始化房间的名称。CClientLog:显示上次登录的用户名的对话框。CConnectServerDlg:客户端与服务器端的连接的对话框。CIniFile:读取当前目录下的ini文件。CShowMessage:显示其他客户端发送的消息。CParseMessage:用户登录时的所选择登陆端口,IP,用户名的对话框。CMyTreeView:客户端上显示的树形列表,以及可实现发送消息头像闪动等。三、 调试数据首先启动服务
4、器端分别启动两个客户端,用户名为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.GetVarStr(USERNAME,D
5、EFUALTNAME,strName);if(!IniFile.GetVarStr(SERVERIP,DEFUALTSERVERIP,strServerIp)strServerIp = _T(127.0.0.1);if(!IniFile.GetVarInt(SERVERPORT,DEFAULTSERVERPORT,iServerPort)iServerPort = 1080;while(iTryTimes =3)AfxMessageBox(已经重试3次,退出);return FALSE;return TRUE;这是关于客户端登录服务器端的代码void CShowMessage:OnOK() /
6、 TODO: Add extra validation here/得到当前按钮的文本CString strButtonTitle;GetDlgItemText(IDOK,strButtonTitle);/杀死接受用户信息时启动的OnTimerCMainFrame * pFrame;pFrame = (CMainFrame *)AfxGetMainWnd();ASSERT(pFrame != NULL);ASSERT_VALID(pFrame);CMyTreeView * pView;pView = (CMyTreeView * )pFrame -GetTreeView();pView -Kil
7、lTimer(iID);/恢复任务栏图标theApp.TaskIcon.hIcon = theApp.LoadIcon(IDI_TASKICON);Shell_NotifyIcon(NIM_MODIFY,&theApp.TaskIcon);/删除接受用户输入时创建的新的链表项pView-DeleteOneClient(m_strClientName,iID);if(strButtonTitle = 回复)m_strMessage = ;UpdateData(FALSE);SetDlgItemText(IDOK,发送);GetDlgItem(IDC_MESSAGE)-SetFocus();els
8、e/回复发送人UpdateData();if(m_strMessage.GetLength()/填充Message结构Message msObj;memset(&msObj,0,sizeof(Message);msObj.iType = USERSESSION;msObj.iSubType = SAYINPRIVATE;CString strTemp = theApp.m_skMainSocket.GetRoomName();int iLen = strTemp.GetLength();lstrcpy(msObj.strRoom,_T(strTemp.GetBuffer(iLen);strTe
9、mp.ReleaseBuffer();strTemp = m_strMessage;iLen = strTemp.GetLength();iLen 1024 ? 1024 : iLen;lstrcpy(msObj.strContent,_T(strTemp.GetBuffer(iLen);strTemp.ReleaseBuffer();theApp.m_skMainSocket.Send(&msObj,sizeof(Message);/自己的名字strTemp = theApp.m_skMainSocket.GetUserName();iLen = strTemp.GetLength();iL
10、en 20 ? 20:iLen;lstrcpy(msObj.strName,_T(strTemp.GetBuffer(iLen);strTemp.ReleaseBuffer();/说话对象的名字strTemp =m_strClientName;iLen = strTemp.GetLength();iLen 20 ? 20 : iLen;lstrcpy(msObj.strClientName,_T(strTemp.GetBuffer(iLen);strTemp.ReleaseBuffer();/发送数据theApp.m_skMainSocket.Send(&msObj,sizeof(Messag
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TCPIP 网络 聊天 课程设计
链接地址:https://www.31ppt.com/p-2400455.html