📄 mainunit.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
#include "MainUnit.h"
#include INFO_H
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
server=NULL;
Connect=false;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
uvar32 err;
server=new UDPSocket;
server->startup();
UpdateIPButtonClick(NULL);
IPEdit->Text=HostIPComboBox->Items->Strings[0];
CloseButton->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
server->cleanup();
delete server;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::StartButtonClick(TObject *Sender)
{
char str[256]="服务器启动失败!\n";
if(server==NULL)
{
ShowMessage("服务器未建立成功!");
return;
}
if(server->Create(IPEdit->Text.c_str(),PortEdit->Text.ToInt())==No)
{
strcat(str,server->GetErrorString());
ShowMessage(str);
return;
}
Connect=true;
GameTimer->Enabled=true;
StateText->Caption="开启";
IPEdit->Enabled=false;
PortEdit->Enabled=false;
SelectIPButton->Enabled=false;
StartButton->Enabled=false;
WarringMax->Enabled=false;
Max->Enabled=false;
CloseButton->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::CloseButtonClick(TObject *Sender)
{
if(Connect==false)
{
ShowMessage("服务器没有开启!");
return;
}
GameTimer->Enabled=false;
server->Close();
Connect=false;
StateText->Caption="未启动";
IPEdit->Enabled=true;
PortEdit->Enabled=true;
SelectIPButton->Enabled=true;
StartButton->Enabled=true;
WarringMax->Enabled=true;
Max->Enabled=true;
CloseButton->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::SelectIPButtonClick(TObject *Sender)
{
IPEdit->Text=HostIPComboBox->Items->Strings[HostIPComboBox->ItemIndex];
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::UpdateIPButtonClick(TObject *Sender)
{
char str[256],**p;
struct hostent *host;
HostIPComboBox->Items->Clear();
server->GetHostName(str);
HostNameText->Caption=str;
host=gethostbyname(str);
p=host->h_addr_list;
do
{
sprintf(str,"%d.%d.%d.%d",(*p)[0],(*p)[1],(*p)[2],(*p)[3]);
HostIPComboBox->Items->Add(str);
}while(*(++p)!=NULL);
HostIPComboBox->ItemIndex=0;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::GameTimerTimer(TObject *Sender)
{
if(Connect==false)return;
char data[1024];
uvar32 datasize;
sockaddr addr;
while(1)
{
if((datasize=server->NBListen(data,1024,&addr))==0)return;
server->Send(data,datasize,&addr);
Memo->Lines->Add(data);
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClearLogButtonClick(TObject *Sender)
{
Memo->Lines->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::SaveToTXTButtonClick(TObject *Sender)
{
if(SaveDialog->Execute()==0)return;
Memo->Lines->SaveToFile(SaveDialog->FileName);
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -