多人聊天系统 C++Builder 6
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用户说明书
服务器程序图标
服务器窗口界面
监听:点击监听即开启服务器,监听各个用户登陆情况;断开:即断开服务器,在有用户在线时,会提示确认信息;
禁止用户:断开某些用户的连接;
内容框:显示连接用户的IP 和用户名;
发送信息窗口:用来对所有在线用户发送信息或者对个别用户发送信息;
状态栏:分别显示用户连接数量、连接状态和目前时间。
用户客户端程序图标
用户窗口界面
主机:设置服务器IP的地址;
登陆:可以自设用户名登陆或者匿名登陆服务器;
离开:断开与服务器的连接;
接受消息窗口:显示服务器端和客户端发送的信息;
发送窗口:发送信息内容;
在线用户列表:显示在线的用户昵称,选中可进行私聊对话;
状态栏:分别显示本机IP地址,本机登陆状态和目前时间。
附录:
1、服务器代码
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "ChatServer.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int Num=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ServerSocket1->Port=1500;
ServerSocket1->Active=true;
m_iClientNum=0;
m_sIsName="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->Items[2]->Text=NowTime.DateTimeString();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1Accept(TObject *Sender,
TCustomWinSocket *Socket)
{
AnsiString sClientNum;
m_iClientNum++;
sClientNum.sprintf("有%d台客户连接",m_iClientNum);
//Num=m_iClientNum;
StatusBar1->Panels->Items[1]->Text="连接成功!";
StatusBar1->Panels->Items[0]->Text=sClientNum;
ListUserAddr->Items->Add(Socket->RemoteAddress);
for(int i=0;i
ServerSocket1->Socket->Connections[i]->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=sTemp.SubString(3,sTemp.Length()-2);
ListUserName->Items->Add(sName);
for(int i=0;i
{
for(int j=0;j
{
AnsiString sName;
sName=ListUserName->Items->Strings[j];
ServerSocket1->Socket->Connections[i]->SendText(sName);