基于TCP的聊天程序设计与开发.pdf
《基于TCP的聊天程序设计与开发.pdf》由会员分享,可在线阅读,更多相关《基于TCP的聊天程序设计与开发.pdf(10页珍藏版)》请在三一文库上搜索。
1、基于 TCP 的聊天程序设计与开发 实验指导 一实验目的 通过设计网络协议及应用程序来加深理解网络各层的功能和机理,特别是对网络层、 运 输层、应用层的理解。 独立编写基于TCP的网络应用程序,独立上机调试程序,掌握基于TCP的网络应用基本 技术。 培养独立思考问题、分析问题的能力和规范化工程设计的能力。综合运用所学的知识去 解决实践中的应用问题,掌握实验技能。为以后的毕业设计与实际工作打下基础。 二 实验方式与基本要求 独立编写程序,独立上机调试程序,独立撰写实验报告 三实验基本步骤 本试验采取分组进行协议设计,然后各自进行独立的完整的程序设计(包括概要设计与 代码设计), 然后互相通信。
2、(如果设计正确, 这组程序的任何一个都应与其它程序是互通的)。 步骤 1: 程序总体结构:C/S 结构。 C 与 S分开。 步骤 2:服务器 S 程序基本构成 S主进程初始化;例如 void CServerSocket:Start() this-Create(1169); /创建端口进程 this-Listen(); 主进程进入监听;例如 Listen();/开始监听 重载虚函数OnAccept,响应客户请求 void CServerSocket:OnAccept(int nErrorCode) / TODO: Add your specialized code here and/or cal
3、l the base class SOCKADDR SockAddr; int i=0; while(iAccept(*slavei,/ 接受客户连接请求 dlg-SetForegroundWindow(); CString idstr; idstr.Format(“%d“,i+1);/加上客户端编号 slavei-Send(“连接成功啦 -“,13);/ 发送连接成功消息给客户 CString c_IP; UINT c_Port; slavei-GetPeerName(c_IP,c_Port);/ 获取客户端IP 和端口 CString strPort; strPort.Format( “%
4、d“,c_Port); char hostStr50;/ 添加客户信息 strcpy(hostStr,“客户 “+idstr+“+c_IP+“:“+strPort+“); dlg-m_hostList.AddString(hostStr);/ 客户上线 break; i+; if(i=SLA VEMAX) dlg-m_hostList.AddString(“ 已超过最大连接数T_T“); CSocket:OnAccept(nErrorCode); 释放一个连接 void CServerSocket:DeleteSlaveSocket(int id) delete slaveid;/ 关闭子进程
5、 slaveid = NULL; 从进程重载虚函数OnReceive,处理接收到的数据;例如 void CServerSlaveSocket:OnReceive(int nErrorCode) / TODO: Add your specialized code here and/or call the base class char rbuf256; int n; n = this-Receive(rbuf,256);/接受消息 rbufn = 0; this-GetPeerName(c_IP ,c_Port);/ 获取对方 IP,端口 char buf512=0; strcpy(buf,“客
6、户“+uid+“: “);/显示客户号 CTime tt; /加上发送时间 strcat(buf,tt.GetCurrentTime().Format(“%H:%M:%S“).GetBuffer(8); strcat(buf,“ rn“); dlg-m_show += buf;/ strcpy(buf,“ “); strcat(buf,rbuf); strcat(buf,“rn“);/显示收到的信息 dlg-m_show += buf;/ dlg-UpdateData(false); dlg-m_showCtrl.LineScroll(dlg-m_showCtrl.GetLineCount()
7、;/新消息总显示 CSocket:OnReceive(nErrorCode); 由于要重载虚函数,所以,必须定义一个CSocket的派生类。 从进程重载虚函数OnClose,释放连接,关闭进程 void CServerSlaveSocket:OnClose(int nErrorCode) / TODO: Add your specialized code here and/or call the base class m_using = false; / 删除连接客户/ dlg-m_hostList.DeleteString(dlg-m_hostList.FindString(-1,“客户 “
8、+uid); this-Close();/对应客户端关闭 cs-DeleteSlaveSocket(m_id);/ 调用主进程的连接释放函数 CSocket:OnClose(nErrorCode); 向客户发送信息;例如 void CServerDlg:Onsend() / TODO: Add your control notification handler code here UpdateData(); char sbuf256; m_send.GetWindowText(sbuf,256);/获取发送框的字符串 m_send.SetWindowText(“); /编辑框置空 m_send
9、.SetFocus(); /焦点返回编辑框 if(strlen(sbuf)!=0) if(m_hostList.GetCurSel()=0)/发送给所有连接上的客户 for(int i=0;islavei!=NULL) pserversocket-slavei-SendMsg(sbuf); else /发送给选中的客户 pserversocket-slavem_hostList.GetCurSel()-1-SendMsg(sbuf); char buf512=0; strcpy(buf,“自己: “); CTime tt; /显示发送时间 strcat(buf,tt.GetCurrentTim
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 TCP 聊天 程序设计 开发
链接地址:https://www.31doc.com/p-4997602.html