📄 scansys.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "ScanSys.h"
#include "DispControl.h"
#include "NetDataRecvThread.h"
#include "CommandID.h"
#include "TypeDefine.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma pack(1)
TForm1 *Form1;
extern ClientIDInfo CliIDInfo[512];
TNetDataRecv *NetDataRecv;
void BeatNetDataSend(void);
bool OpenServerSocket(void);
SOCKET ServerSocket;
static unsigned long BeatSeq = 0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn_DispControlClick(TObject *Sender)
{
Form2->Visible = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn_QuitClick(TObject *Sender)
{
NetDataRecv->Terminate();
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
NetDataRecv = new TNetDataRecv(false);
if (OpenServerSocket())
{
}
else
{
ShowMessage(AnsiString("网络打开失败!\n"));
}
}
//---------------------------------------------------------------------------
void BeatNetDataSend(void)
{
int iErrorCode;
struct sockaddr_in Client_IP_Addr;
ReqBeat *BeatData = NULL;
Client_IP_Addr.sin_family = AF_INET;
Client_IP_Addr.sin_port=htons(CLIENT_RECV_BEAT_PORT);
//Client_IP_Addr.sin_addr.s_addr=inet_addr("224.0.0.1"); ///组播
Client_IP_Addr.sin_addr.s_addr=inet_addr("224.0.0.3");
BeatData = new ReqBeat;
BeatData->head.reqType = BEAT_CMMD_ID;
BeatData->head.cid = 0xffff;
BeatData->head.seq = BeatSeq;
BeatData->head.hilength = 0;
BeatData->head.length = sizeof(ReqBeat);
BeatData->type = BEAT_SERVER_TERMINAL;
BeatSeq++;
sendto(ServerSocket, (char *)BeatData, sizeof(ReqBeat), 0,(sockaddr *)&Client_IP_Addr,sizeof(sockaddr_in));
}
void __fastcall TForm1::__Timer(TObject *Sender)
{
BeatNetDataSend();
}
//---------------------------------------------------------------------------
bool OpenServerSocket(void)
{
WSADATA wsaData;
int iErrorCode;
struct sockaddr_in Server_IP_Addr;
if (WSAStartup(MAKEWORD(2,1),&wsaData)) //调用Windows Sockets DLL
{
ShowMessage(AnsiString("网络初始化失败!\n"));
WSACleanup();
return false;
}
else
{
}
Server_IP_Addr.sin_family = AF_INET;
/*所有网络信息都通过此端口发送心跳包*/
Server_IP_Addr.sin_port=htons(BEAT_SEND_PORT); //发送心跳端口
Server_IP_Addr.sin_addr.s_addr=htonl(INADDR_ANY); ///本机
ServerSocket = socket(AF_INET, SOCK_DGRAM, 0);
/* if (bind(ServerSocket, (struct sockaddr*)&Server_IP_Addr, sizeof(Server_IP_Addr)) < 0)
{
ShowMessage(AnsiString("网络初始化失败!\n"));
WSACleanup();
closesocket(ServerSocket);
return false;
} */
return true;
}
void __fastcall TForm1::ClientOnLineTimerTimer(TObject *Sender)
{
for (int i = 0;i < ClientNum; i++)
{
CliIDInfo[i].OnLineTime += 1;
if (CliIDInfo[i].OnLineTime == 30000)
{
ClientList->Delete(CliIDInfo[i].CliID);
Form2->IDListBox->Items->AddStrings(ClientList);
}
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -