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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

多人聊天系统C++Builder 6.docx

1、多人聊天系统 C+Builder 6用户说明书服务器程序图标服务器窗口界面监听:点击监听即开启服务器,监听各个用户登陆情况;断开:即断开服务器,在有用户在线时,会提示确认信息;禁止用户:断开某些用户的连接;内容框:显示连接用户的IP 和用户名;发送信息窗口:用来对所有在线用户发送信息或者对个别用户发送信息;状态栏:分别显示 用户连接数量、连接状态和目前时间。用户客户端程序图标用户窗口界面主机:设置服务器IP的地址;登陆:可以自设用户名登陆或者匿名登陆服务器;离开:断开与服务器的连接;接受消息窗口:显示服务器端和客户端发送的信息;发送窗口:发送信息内容;在线用户列表:显示在线的用户昵称,选中可进

2、行私聊对话;状态栏:分别显示本机IP地址,本机登陆状态和目前时间。附录:1、服务器代码/-#include #pragma hdrstop#include ChatServer.h/-#pragma package(smart_init)#pragma resource *.dfmTForm1 *Form1; int Num=0;/-_fastcall TForm1:TForm1(TComponent* Owner) : TForm(Owner) ServerSocket1-Port=1500; ServerSocket1-Active=true; m_iClientNum=0; m_sIsN

3、ame=NA; m_sIsChat=CT; m_sPart=#; m_sIsCommand=CO; m_sTo=ALL; MenuListen-Enabled=false; MenuClose-Enabled=true; Application-OnException=AppException; TDateTime NowTime; NowTime=Now(); StatusBar1-Panels-Items2-Text=NowTime.DateTimeString();/-void _fastcall TForm1:ServerSocket1Accept(TObject *Sender, T

4、CustomWinSocket *Socket) AnsiString sClientNum; m_iClientNum+; sClientNum.sprintf(有%d台客户连接,m_iClientNum); /Num=m_iClientNum; StatusBar1-Panels-Items1-Text=连接成功!; StatusBar1-Panels-Items0-Text=sClientNum; ListUserAddr-Items-Add(Socket-RemoteAddress); for(int i=0;iSocket-ActiveConnections;i+) ServerSo

5、cket1-Socket-Connectionsi-SendText(CLEAR); Sleep(100);/-void _fastcall TForm1:ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) AnsiString sTemp; AnsiString sPre; AnsiString sWelcome; sTemp=Socket-ReceiveText(); sPre=sTemp.SubString(1,2); if(sPre=m_sIsName) AnsiString sName; sName=s

6、Temp.SubString(3,sTemp.Length()-2); ListUserName-Items-Add(sName); for(int i=0;iSocket-ActiveConnections;i+) for(int j=0;jItems-Count;j+) AnsiString sName; sName=ListUserName-Items-Stringsj; ServerSocket1-Socket-Connectionsi-SendText(sName); Sleep(10); sWelcome=m_sIsChat+m_sPart; sWelcome+=AnsiStrin

7、g(服务器说: 大家欢迎()+sName+AnsiString() 的光临!); ServerSocket1-Socket-Connectionsi-SendText(sWelcome); if(sPre=m_sIsChat) AnsiString sTo,sChat; int iPos; iPos=sTemp.Pos(m_sPart); sTo=sTemp.SubString(3,iPos-3); sChat=m_sIsChat+sTemp.SubString(iPos,sTemp.Length()-iPos+1); if(sTo=AnsiString(ALL) ) for(int i=0;

8、iSocket-ActiveConnections;i+) ServerSocket1-Socket-Connectionsi-SendText(sChat); if(sTo!=AnsiString(ALL) ) int iIndex=ListUserName-Items-IndexOf(sTo); ServerSocket1-Socket-ConnectionsiIndex-SendText(sChat); /-void _fastcall TForm1:AppException(TObject *Sender, Exception *E) Application-ShowException

9、(E); Application-Terminate();/-void _fastcall TForm1:ServerSocket1ClientDisconnect(TObject *Sender, TCustomWinSocket *Socket) AnsiString sTemp,sClientNum; m_iClientNum-; sClientNum.sprintf(有%d台客户连接,m_iClientNum); /Num=m_iClientNum; StatusBar1-Panels-Items0-Text=sClientNum; sTemp.sprintf(%s断开连接!,Sock

10、et-RemoteAddress); StatusBar1-Panels-Items1-Text=sTemp; int iIndex; iIndex=ListUserAddr-Items-IndexOf(Socket-RemoteAddress); ListUserAddr-Items-Delete(iIndex); ListUserName-Items-Delete(iIndex);/-void _fastcall TForm1:ServerSocket1ClientError(TObject *Sender, TCustomWinSocket *Socket, TErrorEvent Er

11、rorEvent, int &ErrorCode) ErrorCode=0; /-void _fastcall TForm1:EdtSendKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) if(Key=VK_RETURN) if(EdtSend-Text=) ShowMessage(对不起, 不能发空信息!); else AnsiString sTemp; sTemp=m_sIsChat+m_sPart+AnsiString(服务器说:)+EdtSend-Text; if(m_sTo=AnsiString(ALL) ) for(in

12、t i=0;iSocket-ActiveConnections;i+) ServerSocket1-Socket-Connectionsi-SendText(sTemp); if(m_sTo!=AnsiString(ALL) ) int iIndex=ListUserName-Items-IndexOf(m_sTo); ServerSocket1-Socket-ConnectionsiIndex-SendText(sTemp); EdtSend-Clear(); /-void _fastcall TForm1:ListUserNameClick(TObject *Sender) m_sTo=L

13、istUserName-Items-StringsListUserName-ItemIndex; LabelNotice-Caption=AnsiString(向)+m_sTo+AnsiString(发信息!); /-void _fastcall TForm1:BtnToAllClick(TObject *Sender) m_sTo=ALL; LabelNotice-Caption=向所有人发信息; /-void _fastcall TForm1:MenuCloseClick(TObject *Sender) if(ServerSocket1-Active) if (m_iClientNum!

14、=0) if (MessageBox(Handle, 确实要断开连接吗? , 系统提示 , MB_OKCANCEL | MB_ICONQUESTION) = IDOK) ServerSocket1-Close(); MenuListen-Enabled=true; MenuClose-Enabled=false; ListUserAddr-Items-Clear(); ListUserName-Items-Clear(); m_iClientNum=0; StatusBar1-Panels-Items0-Text=有0台客户连接; StatusBar1-Panels-Items1-Text=服

15、务器断开连接; else ServerSocket1-Close(); MenuListen-Enabled=true; MenuClose-Enabled=false; ListUserAddr-Items-Clear(); ListUserName-Items-Clear(); m_iClientNum=0; StatusBar1-Panels-Items0-Text=有0台客户连接; StatusBar1-Panels-Items1-Text=服务器断开连接; /-void _fastcall TForm1:MenuDisconnectClick(TObject *Sender) if(

16、m_sTo=ALL) AnsiString sTemp; sTemp.sprintf(真的要断开与%s的连接吗?,所有人); if(MessageDlg(sTemp, mtConfirmation, TMsgDlgButtons() mbYes mbNo, 0) =mrYes) for(int i=0;iSocket-ActiveConnections;i+) ServerSocket1-Socket-Connectionsi-Close(); if(m_sTo!=ALL) AnsiString sTemp; sTemp.sprintf(真的要断开与%s的连接吗?,m_sTo); if(Mes

17、sageDlg(sTemp, mtConfirmation, TMsgDlgButtons() mbYes Items-IndexOf(m_sTo); ServerSocket1-Socket-ConnectionsiIndex-Close(); /-void _fastcall TForm1:MenuListenClick(TObject *Sender) if(!ServerSocket1-Active) ServerSocket1-Open(); MenuListen-Enabled=false; MenuClose-Enabled=true;/-void _fastcall TForm

18、1:btnsendClick(TObject *Sender)if(EdtSend-Text=)ShowMessage(对不起, 不能发空信息!);else AnsiString sTemp; sTemp=m_sIsChat+m_sPart+AnsiString(服务器说:)+EdtSend-Text; if(m_sTo=AnsiString(ALL) ) for(int i=0;iSocket-ActiveConnections;i+) ServerSocket1-Socket-Connectionsi-SendText(sTemp); if(m_sTo!=AnsiString(ALL) )

19、 int iIndex=ListUserName-Items-IndexOf(m_sTo); ServerSocket1-Socket-ConnectionsiIndex-SendText(sTemp); EdtSend-Clear();/-void _fastcall TForm1:FormCloseQuery(TObject *Sender, bool &CanClose) if (m_iClientNum!=0) CanClose = (MessageBox(Handle, 还有用户在线,确实要退出吗? , 系统提示 , MB_OKCANCEL | MB_ICONQUESTION) =

20、IDOK); else CanClose=true; /-2、用户客户端代码 /-#include #pragma hdrstop#include ChatClient.h/-#pragma package(smart_init)#pragma resource *.dfmTForm1 *Form1;/-_fastcall TForm1:TForm1(TComponent* Owner) : TForm(Owner) m_sHostAddress=Powersock1- LocalIP; StatusBar1-Panels-Items0-Text=Powersock1- LocalIP; Cl

21、ientSocket1-Active=false; ClientSocket1-Address=m_sHostAddress; ClientSocket1-Port=1500; m_sSpeakTo=ALL; m_sIsName=NA; m_sIsChat=CT; m_sPart=#; m_HasConnected=false; TDateTime NowTime; NowTime=Now(); StatusBar1-Panels-Items2-Text=NowTime.DateTimeString();/-void _fastcall TForm1:ClientSocket1Connecti

22、ng(TObject *Sender, TCustomWinSocket *Socket) StatusBar1-Panels-Items1-Text=正在连接,请稍后.;/-void _fastcall TForm1:ClientSocket1Connect(TObject *Sender, TCustomWinSocket *Socket) Socket-SendText(m_sIsName+m_sName); AnsiString sTemp; sTemp.sprintf(%s登录成功!,m_sName); MenuConnect-Enabled=false; StatusBar1-Pa

23、nels-Items1-Text=sTemp; LabelNotice-Caption=m_sName+AnsiString(对所有人说.); m_HasConnected=true;/-void _fastcall TForm1:ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) AnsiString sInfo; AnsiString sType; AnsiString sChat; sInfo=Socket-ReceiveText() ; sType=sInfo.SubString(1,2); if(sInfo=AnsiString(CLEAR) ListUser-Items-

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

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