📄 server.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
AnsiString NowlogName="";
AnsiString NowlogHost="";
AnsiString NowlogAddress="";
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Memo1->Clear();
ListBox1->Clear();
ListBox2->Clear();
ListBox3->Clear();
ServerSocket1->Active=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
Memo1->Clear();
ListBox1->Clear();
ListBox2->Clear();
ListBox3->Clear();
AnsiString SysInfo;
SysInfo="["+TimeToStr(Now())+"]"+" 与服务器失去连接!请重新连接!";
int M=0;
M=ServerSocket1->Socket->ActiveConnections;
for(int i=0;i<M;i++)
{
ServerSocket1->Socket->Connections[i]->SendText(SysInfo);
}
ServerSocket1->Active=false;
ServerSocket1->Close();
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
NowlogHost=Socket->RemoteHost;
NowlogAddress=Socket->RemoteAddress;
AnsiString Data=Socket->ReceiveText(); //接收用户发送的信息
AnsiString SubData1=Data.SubString(Data.Length()-7,8); //分析信息
AnsiString SubData2=Data.SubString(1,Data.Length()-8);
if(SubData1=="@login@@") //如果是用户登陆的信息
{
ListBox1->Items->Add(SubData2); //用户信息加入到用户列表
ListBox2->Items->Add(NowlogAddress);
ListBox3->Items->Add(NowlogHost);
AnsiString SysInfo="["+TimeToStr(Now())+"]"+SubData2+" 加入了会议!";//显示系统信息
Memo1->Lines->Add(SysInfo);
if(ServerSocket1->Socket->ActiveConnections)
for(int i=0;i<ServerSocket1->Socket->ActiveConnections;i++)
// ServerSocket1->Socket->Connections[i]->SendText(SubData2+"@login@@");
ServerSocket1->Socket->Connections[i]->SendText("@login@@"+SubData2+"@"+NowlogHost+"@"+NowlogAddress);
}
else if(SubData1=="@logout@") //如果是用户退出会议
{
int Index1=ListBox1->Items->IndexOf(SubData2); //从用户列表中删除该用户信息
ListBox1->Items->Delete(Index1);
int Index2=ListBox2->Items->IndexOf(NowlogAddress);
ListBox2->Items->Delete(Index2);
int Index3=ListBox3->Items->IndexOf(NowlogHost);
ListBox3->Items->Delete(Index3);
Memo1->Lines->Add("["+TimeToStr(Now())+"]"+SubData2+" 退出了会议!"); //显示系统信息
if(ServerSocket1->Socket->ActiveConnections)
for(int i=0;i<ServerSocket1->Socket->ActiveConnections;i++)
// ServerSocket1->Socket->Connections[i]->SendText(SubData2+"@logout@");
ServerSocket1->Socket->Connections[i]->SendText("@logout@"+SubData2+"@"+NowlogHost+"@"+NowlogAddress);
}
else
{
Data="["+TimeToStr(Now())+"]"+Data; //加入系统时间
Memo1->Lines->Add(Data);
//向所有用户转发信息
if(ServerSocket1->Socket->ActiveConnections)
for(int i=0;i<ServerSocket1->Socket->ActiveConnections;i++)
ServerSocket1->Socket->Connections[i]->SendText(Data);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Memo1Change(TObject *Sender)
{
if(Memo1->Lines->Count>=100)
Memo1->Lines->Clear();
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -