⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 本目录内所有代码仅作指导用户编程之用,用户如果要作为 商业用途,建议使用正版软件进行编译. 开发环境说明: delphi demo : delphi 6.0 vc de
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Main.h"
#include <stdio.h>

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmMain *frmMain;
//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
        : TForm(Owner)
{
}

void __fastcall TfrmMain::GprsReceive(int xx)
{
        TListItem *pItem;
        TTreeNode *Node1;
        char mess[256];
        FARPROC lpFarProc;
        data_record mydata;
        AnsiString str;
        int(_stdcall *do_read_proc)(data_record *, char *, bool );
        if( GprsHandle != NULL )
        {
             lpFarProc = GetProcAddress( GprsHandle,"do_read_proc" ); //得到指向函数的指针
             do_read_proc = ( int(_stdcall*)(data_record *, char *, bool) ) lpFarProc; //指针类型转换
             if( (*do_read_proc)( &mydata, mess, 0 ) >= 0)
            {
               switch (mydata.m_data_type)
               {
                 case 0x01:
                    Edit1->Text=AnsiString(mydata.m_userid);
                    Memo1->Lines->Add("注册: "+AnsiString(mydata.m_userid));
                    TreeView1->Items->AddChild(Root,AnsiString(mydata.m_userid));
                    pollusertable();
                    break;
                 case 0x02:
                    Memo1->Lines->Add("登出: "+AnsiString(mydata.m_userid));
                    for (int i=1;i<=TreeView1->Items->Count -1;i++)
                    {
                       Node1=TreeView1->Items->Item[i];
                       str= AnsiString(mydata.m_userid);
                       if (StrComp(Node1->Text.c_str()  ,str.c_str())==0)
                         TreeView1->Items->Delete(Node1);
                    }
                    pollusertable();
                    break;
                 case 0x09:
                   Memo1->Lines->Add("接受:"+AnsiString(mydata.m_data_buf));
                   break;
               }
            }
        }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::pollusertable()
{
    int i ;
    TListItem *pItem;
    String dstr;
    String closeonemess;
    int temp;
    int tucount;
    user_info  tuserinfo;
    String tmess;
    TDate b;
    long t_update ;
    long m1;
    long m2;
//    b = #1/1/1970#;
    FARPROC lpFarProc;
    lpFarProc = GetProcAddress(GprsHandle,"get_max_user_amount" ); //得到指向函数的指针
    get_max_user_amount = (int(_stdcall*)())lpFarProc; //指针类型转换

    tucount = get_max_user_amount();
    if (tucount < 1)    return;
    ListView1->Items->Clear();
    m1 = 256;
    m2 = m1 * 256;
    for (i = 0; i<=tucount ;i++)
    {
        lpFarProc = GetProcAddress(GprsHandle,"get_user_at" ); //得到指向函数的指针
        get_user_at=(int(_stdcall*)(uint ,user_info *))lpFarProc; //指针类型转换
        temp = get_user_at(i, &tuserinfo);
        if (tuserinfo.m_status == 1 )
        {
                    pItem=ListView1->Items->Add() ;
                    pItem->Caption =AnsiString(tuserinfo.m_userid);
                    pItem->SubItems->Add(AnsiString(tuserinfo.m_logon_date));
                    char str[50];
                    sprintf(str,"%d.%d.%d.%d",(unsigned char)(tuserinfo.m_local_addr >> 24),
                                              (unsigned char)(tuserinfo.m_local_addr >> 16),
                                              (unsigned char)(tuserinfo.m_local_addr >> 8),
                                              (unsigned char)tuserinfo.m_local_addr );
                    pItem->SubItems->Add(str);
                    pItem->SubItems->Add(AnsiString(tuserinfo.m_local_port));
                    sprintf(str,"%d.%d.%d.%d",(unsigned char)(tuserinfo.m_sin_addr >> 24),
                                              (unsigned char)(tuserinfo.m_sin_addr >> 16),
                                              (unsigned char)(tuserinfo.m_sin_addr >> 8),
                                              (unsigned char)tuserinfo.m_sin_addr );
                    pItem->SubItems->Add(str);
                    pItem->SubItems->Add(AnsiString(tuserinfo.m_sin_port));
              }
    }
}

void __fastcall TfrmMain::btnStartServerClick(TObject *Sender)
{
    char mess[128];
    FARPROC lpFarProc;
    GprsHandle = LoadLibrary("wcomm_dll.dll");
    if( GprsHandle != NULL )
    {
        //lpFarProc = GetProcAddress( GprsHandle,"start_gprs_server"); //得到指向函数的指针
        lpFarProc = GetProcAddress( GprsHandle,"start_net_service"); //得到指向函数的指针
        start_net_service = (int(_stdcall*)( HWND, unsigned int, int, char * ))lpFarProc; //指针类型转换
        if((*start_net_service)(this->Handle, MYMESS, 5002, mess ) >= 0 )
            Memo1->Lines->Add(AnsiString(mess) );

        btnReadProcClick(btnReadProc);
        TreeView1->Items->Item[0]->ImageIndex =0;
        Root = TreeView1->Items->Item[0];
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnStopServerClick(TObject *Sender)
{
char mess[128];
FARPROC lpFarProc;

    if( GprsHandle != NULL )
    {
        //lpFarProc = GetProcAddress( GprsHandle,"stop_gprs_server" ); //得到指向函数的指针
        lpFarProc = GetProcAddress( GprsHandle,"stop_net_service" ); //得到指向函数的指针
        stop_net_service = (int(_stdcall*)( char * ) ) lpFarProc; //指针类型转换
        if(  stop_net_service( mess ) >= 0 )
            Memo1->Lines->Add(AnsiString(mess));

        FreeLibrary(GprsHandle);
        GprsHandle=NULL;
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnReadProcClick(TObject *Sender)
{
char mess[256];
FARPROC lpFarProc;
data_record mydata;

    if( GprsHandle != NULL )
    {
        lpFarProc = GetProcAddress( GprsHandle,"do_read_proc" ); //得到指向函数的指针
        do_read_proc = ( int(_stdcall*)(data_record *, char *, bool) ) lpFarProc; //指针类型转换
        if( do_read_proc( &mydata, mess, 0 ) >= 0)
             Memo1->Lines->Add(AnsiString(mess));
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnWriteClick(TObject *Sender)
{
AnsiString str;
AnsiString userid;
char mess[256];
FARPROC lpFarProc;


    if( GprsHandle != NULL )
    {
        lpFarProc = GetProcAddress( GprsHandle,"do_send_user_data" ); //得到指向函数的指针
        do_send_user_data = ( int(_stdcall*)(uint8* ,uint8*,uint ,char *) ) lpFarProc; //指针类型转换
        userid=Edit1->Text;
        str=Edit2->Text;
        do_send_user_data(userid.c_str(),str.c_str()   ,str.Length(),NULL);
    }

}






//---------------------------------------------------------------------------


void __fastcall TfrmMain::SpeedButton1Click(TObject *Sender)
{
  frmMain->Close();
}
//---------------------------------------------------------------------------



void __fastcall TfrmMain::TreeView1Change(TObject *Sender, TTreeNode *Node)
{
  FSelectedIndex=Node->Index;
  FSelectedText=Node->Text ;
  if (strcmp(AnsiString(FSelectedText).c_str() ,"DTU列表")!=0)
   Edit1->Text = FSelectedText;

}
//---------------------------------------------------------------------------



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -