ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:178KB ,
资源ID:8290072      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8290072.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于TCP的聊天程序设计与开发.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于TCP的聊天程序设计与开发.docx

1、基于TCP的聊天程序设计与开发基于TCP的聊天程序设计与开发作者: 日期: 基于TC的聊天程序设计与开发实验指导一 实验目的通过设计网络协议及应用程序来加深理解网络各层的功能和机理,特别是对网络层、运输层、应用层的理解。独立编写基于P的网络应用程序,独立上机调试程序,掌握基于TCP的网络应用基本技术。培养独立思考问题、分析问题的能力和规范化工程设计的能力。综合运用所学的知识去解决实践中的应用问题,掌握实验技能。为以后的毕业设计与实际工作打下基础。二 实验方式与基本要求独立编写程序,独立上机调试程序,独立撰写实验报告三 实验基本步骤本试验采取分组进行协议设计,然后各自进行独立的完整的程序设计(包

2、括概要设计与代码设计),然后互相通信。(如果设计正确,这组程序的任何一个都应与其它程序是互通的)。步骤1: 程序总体结构:C结构。C与分开。步骤2:服务器S程序基本构成S主进程初始化;例如oidCSeverSocket::Str()this-Crate(169); /创建端口进程is-Listen();主进程进入监听;例如istn();/开始监听重载虚函数OnAcct,响应客户请求oi CServeSocket:Occept(it nErroCo) / TODO: Add yospecialied ode re an/r call thease lassSOCKADDSokddr;nt i=0

3、;hile(iSAVEAX)i(slave=NULL)slai= new CServrSlavecket(dl,thi,i);/创建子进程this-Acp(*slave,&SokAdr);/接受客户连接请求dlg-SetForegroundWndo();Ctring ir;itromt(%d,i+);/加上客户端编号slvei-Snd(连接成功啦-,);/发送连接成功消息给客户CSring _IP;UIPot;slae-GetPerNme(c_I,c_ort);/获取客户端IP和端口CStin strt;strPort.Fma( %,c_Pot);cha hostr50;/添加客户信息cy(h

4、osStr,客户idstr+c_P+:+srrt+);dl-_hotLis.Addtrin(hostStr);/客户上线beak;i+;i(SLEAX)dlg-_hosLisAdStrin(已超过最大连接数T);CSocket:OAccept(nErrorC);释放一个连接vdServrocke:elteSlavSoke(inid)lete lvid;/关闭子进程savei =ULL;从进程重载虚函数OnRceive,处理接收到的数据;例如void CSeeSlaeSocke:Onecei(intnErroCe) OO: Add youspecilized code her and/o cll

5、 te base classcar rbu26;int n;n = ti-cev(buf,25);/接受消息rfn = 0;his-GterNae(cP,c_ot);/获取对方,端口ar u5120;strcy(f,客户ud: );/显示客户号CTie t; /加上发送时间stct(buf,tt.GetCurrtime().Forat(H:M:%S).GetBufr(8);strc(bf, rn);d-m_so += buf;/srcpy(bf, );rca(buf,rbuf);strca(buf,rn);/显示收到的信息dlg_ow = buf;/dlgUpdateDat(as);l-msh

6、wCtr.LineSrol(dlg-m_hCtrlGetLneCo();/新消息总显示Ccket:Oneeive(nErorode);由于要重载虚函数,所以,必须定义一个Socket的派生类。从进程重载虚函数OnCose,释放连接,关闭进程voi CServerSlaveScket:OnClse(t nEroCod) / TODO: A yourspcalzd odeer and/oral he ae classm_uing = fs;/删除连接客户/dlgm_osList.DleteStrng(lg-stList.idtrin(1,客户id);is-lose();/对应客户端关闭csDeet

7、eSlveockt(m_i);/ 调用主进程的连接释放函数CSocket::nlose(nrroCd);向客户发送信息;例如vid CSerrDlg:Onsen()/ TOD: dyu ontro notificatonhndlrode erepatData();ha sbf56;msend.GetWiwTe(sbuf,256);/获取发送框的字符串msendetWindowText(); /编辑框置空_end.StFo(); /焦点返回编辑框(trlen(b)!=0) if(mstis.GCurSel()=0)/发送给所有连接上的客户for(int 0;iAVEMA;+)if(erverso

8、kt-savi!NU)psrveocetlvi-edMs(sbuf);ese /发送给选中的客户prversocket-sl_hostLit.GtCurSel()-1SedMsg(sbuf);ca buf512=0;stcy(uf,自己: );CTie tt; /显示发送时间stcat(buf,tteCurretime().ormat(%H:%M:%S)Bufer(8);ra(bf, r);m_sow uf;/scpy(f, );rca(bf,sbuf);srcat(buf,rn);/显示发送内容m_how = uf;/ UdteDt(fal);mowCrl.inScroll(m_sowCl.

9、Getneut();/编辑框自动滚动发送表情:voidCServrDlg:OnedMod() / TOD: Ad ur cntl noticatnhnlcode hreCtring tr,data;/插入表情moodr.GetLBext(m_moodtrl.GturSe(),str);m_send.GtWndoext(ata);m_endStindText(dtastr);清屏:vd CSrverDlg:ClaMsg() /清屏/ ODO:Add yor contro notiicatin hadlr co rem_sho=_T();Updaeata(fse);步骤3:客户C程序基本构成创建T

10、CP客户;voi ClentDl:Oconnc() /O: Adyou coto noifiationandle ode hercCreat(0); /创建端口if(c-Connc(m_serverI,6))/请求连接m_end.nabeWinw(ue); /允许发送_nnecEnabeWindw(fls); /cnect_isconectEnablindw(true); /dsconnetesem_sow + _T(连接失败!.rn);/UpateDa(ase);/m_sowCtl.ineSroll(m_showtrl.tLineCut());/-los();retr;向服务器(m_serv

11、erIP,169)发送连接请求;例如cc-Cect(m_sverI,169);断开连接:oidCintDg:Odisconnect() /TODO: Ad yo onrol notification handercode recc-lose();/断开连接mshw T(断开连接!.-n);/pdateDat(false);/mshotrl.LinSrl(m_shotrGetCont();/按钮不可用m_sendEnableindow(fals);/sendmconnec.abeWinw(tue); /conectmiscoect.EnablWidw(alse); /dsconect向服务器发送

12、信息;例如vid ClieDl:Onend()/T:Ad you control notificatiohadlecode hercar sbf25;m_sendata.GtWinwTxt(suf,256);/获取发送框的字符串msendda.SeWindwTet(); /编辑框置空cce(sbf,srlen(s); /发送信息_senddata.SeFocus();/焦点返回编辑框if(sren(sbf)!) /发送字符不为空car f5120;strp(bu,自己: ); /加上自己的标志CTme tt; /加上发送时间 tcat(buf,t.GeCrTime().Fomat(H:%:%S

13、)Gtufer(8));srcat(b, rn);m_how += bf;strcpy(buf, ); /显示自己发送的内容strt(bf,buf);strcat(buf,(r));m_show +=buf;UpdatDaa(fase);msowCtr.ineSroll(m_shtrl.GetLineCont());/新消息滚动发送表情:voi ClietDlg:Od() / TODO: Add yurontrolnotificainhandle code herSing t,ata;/插入表情m_modCtrlGetLTxt(m_moodCtl.GetCuel(),t);m_senddata

14、GetiowTet(dta);m_enddata.StindwTex(daar);重载虚函数Oneceiv,处理接收到的数据;例如vod intSocke::OnReceie(it nErorCoe) /接收消息/TOO: dyousecialized deerandor lltebase clsha rbuf256;int n;n = ths-Rceive(rbf,56); /获取收到的消息字符串rbufn=0;chr bf12=;srcp(uf,服务器端: );Cime ; /加上发送时间strcat(buf,ttCurentm().Format(%:%:%).eBfer(8));strc

15、at(buf, r);dlg_shw +=bu;strcpy(uf, ); /显示收到的信息trcat(buf,rb);tc(bf,n);d-m_sho += buf;dlg-UdaeDt(se);dlg-m_sowCtl.LineScrol(dlg-_howtrl.etLneCout());/新消息总显示CSoc::OnReceie(nErrorCode);清屏:void CintDlg::nCearMg() /清屏/ TOD:Ad your contrl oifit hadler codheremshw = _T();UdteDa(fase);四 实验结果客户端:服务器端:连接: 消息通信:多用户连接:断开连接:五 实验问题多用户连接时,到达最大连接数时,程序会出现问题,已连接的客户断开后,无法再连接上。不同的客户聊天记录的信息应该显示不同,这个功能还没有做出来。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1