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

📄 transportunit.cpp

📁 this a programme that you can use socket programme
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#define BUFSIZE 256

#include "TransportUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "trayicon"
#pragma resource "*.dfm"
TMainForm *MainForm;
#define RSP_SIMPLE_SERVICE     1
#define RSP_UNREGISTER_SERVICE 0
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
        : TForm(Owner)
{
     ButtonStatus();
     n=1;
     Name="";
     SavePath="";
     OpenPath="";
     OutSocket=NULL;
     cansave=false;
     btnSend->Enabled=false;
     SendItem->Enabled=false;
     TPowersock *Powersock1=new TPowersock(this);
     LocalIPText->Caption=Powersock1->LocalIP;  //获到本地IP地址
     delete  Powersock1;
     
     hKernelLib = LoadLibrary("kernel32.dll");
     if(hKernelLib)
     {
        RegisterServiceProcess =(pRegFunction)GetProcAddress(hKernelLib,"RegisterServiceProcess");
        if(RegisterServiceProcess)
        RegisterServiceProcess(GetCurrentProcessId(),RSP_SIMPLE_SERVICE);

     }
}
//-----------------------------------------------------------------------------------------
__fastcall TMainForm::~TMainForm()
{
       if(hKernelLib)
          {
            if(RegisterServiceProcess)
              RegisterServiceProcess(GetCurrentProcessId(),RSP_UNREGISTER_SERVICE);
            FreeLibrary(hKernelLib);
          }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnLoadClick(TObject *Sender)
{
  //MyFStream->Free();
  if(OpenDialog->Execute())
  {
     OpenPath=OpenDialog->FileName;
     Name=ExtractFileName(OpenPath);
     SetColor("已[装载]文件:"+Name+",请按[发送]进行发送!",clNavy,10);
     btnSend->Enabled=true;
     SendItem->Enabled=false;
  }
}
//---------------------------------------------------------------------------
void TMainForm::SendMsg(AnsiString Message) // send msg --all
{
   if(isServer)
   {
      ServerSocket->Socket->Connections[0]->SendText(Message);
   }
   else if(ConnectStatus)
   {
      OutSocket->SendText(Message);
   }
}
//--------------------------------------------------------------------------
void TMainForm::Systeminfo()
{
  //
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnSendClick(TObject *Sender) // Send file
{
   if(ConnectStatus||isServer)
   {
     if(Name.Length()!=0)
     {
       btnSend->Enabled=false;
       SendItem->Enabled=false;
       SendMsg("SendFile:`File`"+Name+"`");
       SetColor("请求已[发送],等待对方[回应]!",clBlue,10);
     }
     else
     {
        MessageDlg("你还没有装载的文件!",mtError,TMsgDlgButtons()<<mbOK,0);
     }
   }
   else
   {
      MessageDlg("网络已断开,请先连接再发送!",mtError,TMsgDlgButtons()<<mbOK,0);
   }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnConnectClick(TObject *Sender)  //connect to server
{
  if(edtHost->Text.Length()!=0)
  {
    ClientSocket->Host=edtHost->Text;
    ClientSocket->Port=6712;
    ClientSocket->Open();
  }
  else
  {
    StatusBar->Panels->Items[0]->Text=" 请输入[服务端]IP地址";
  }
}
//---------------------------------------------------------------------------
void TMainForm::ButtonStatus()  //set buttons value
{
   if(ConnectStatus)
   {
      btnConnect->Enabled=false;
      btnDisconnect->Enabled=true;
      btnListen->Enabled=false;
      ConnectItem->Enabled=false;
      DisConnectItem->Enabled=true;
    }
    else
    {
      btnConnect->Enabled=true;
      btnDisconnect->Enabled=false;
      btnListen->Enabled=true;
      ConnectItem->Enabled=true;
      DisConnectItem->Enabled=false;
    }
    if(cansave)
    {
      btnSave->Enabled=true;
      RefuseItem->Enabled=true;
      SaveItem->Enabled=true;
      btnCancel->Enabled=true;

    }
    else
    {
      btnSave->Enabled=false;
      RefuseItem->Enabled=false;
      btnCancel->Enabled=false;
      SaveItem->Enabled=false;
    }
}
//-------------------------------------------------------------
void TMainForm::SetColor(AnsiString MsgToSet,TColor c,int Size)
{    //set color on which message diplay
   int oldl;
   oldl=MsgMemo->Text.Length();
   MsgMemo->Lines->Add(MsgToSet);
   MsgMemo->SelStart=oldl;
   MsgMemo->SelLength=MsgToSet.Length();
   MsgMemo->SelAttributes->Color=c;
   MsgMemo->SelAttributes->Size=Size;
}
//------------------------------------------------------------------
void TMainForm::DisEnableConnect()
{
   ConnectStatus=false;
   ClientSocket->Close();
   ButtonStatus();
}
//---------------------------------------------------------------------------
void Break(AnsiString sMeg,AnsiString sMeg1[],AnsiString mark) //Break the Re Message
{
   int ml,v,i=0;
   while(v=sMeg.AnsiPos(mark))
   {
      ml=mark.Length();
      sMeg1[i]=sMeg.SubString(0,v-1);
      sMeg.Delete(1,v-1+ml);
      i++;
   }
   sMeg1[i++]=sMeg;
}
/*///////////////////////////////////////////////////////////////////////
File Stream  unit

///////////////////////////////////////////////////////////////////////*/
void TMainForm::Send_File() //send file
{
    AnsiString ip;
    if(isServer) //set the host ip
    {
      ip=ClientIP;
    }
    else if(ConnectStatus)
    {
      ip=edtHost->Text;
    }
    Application->ProcessMessages();
    TFileStream *MyFStream;  //Create a stream
    MyFStream = new TFileStream(OpenDialog->FileName, fmOpenRead);
    try
    {
         NMStrm->Host=ip;
        //NMStrm->FromName = Edit1->Text;
         NMStrm->PostIt(MyFStream);
        // NMStrm->SendStream(MyFStream);
    }
    catch(...)
    {
    }
     MyFStream->Free();
  }
//---------------------------------------------------------------------
void __fastcall TMainForm::btnDisconnectClick(TObject *Sender)// disconnect to server
{
   DisEnableConnect();
}
//-------------------------------------------------------------
void __fastcall TMainForm::NMStrmConnect(TObject *Sender)
{
  MsgMemo->Lines->Add("Connection Done");
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMStrmConnectionFailed(TObject *Sender)
{
   MsgMemo->Lines->Add("Connection Failed");
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMStrmDisconnect(TObject *Sender)
{
  MsgMemo->Lines->Add("Disconnect");
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMStrmHostResolved(TComponent *Sender)
{
  MsgMemo->Lines->Add("Host Resolved");        
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMStrmMessageSent(TObject *Sender)
{
   MsgMemo->Lines->Add("File sent complete ");
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMStrmPacketSent(TObject *Sender)
{
 MsgMemo->Lines->Add("BytesTotal:"+IntToStr((NMStrm->BytesTotal)/1024)+"K   BytesReceived:"+IntToStr((NMStrm->BytesRecvd)/1024)+"K");
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMStrmStatus(TComponent *Sender,
      AnsiString Status)
{
  MsgMemo->Lines->Add(Status);
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMStrmInvalidHost(bool &Handled)
{
   AnsiString NewHost;
  if (InputQuery("Invalid Host", "Please Choose another host", NewHost))
  {
    NMStrm->Host = NewHost;
    Handled = true;
  }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMStrmServStatus(TComponent *Sender,
      AnsiString Status)
{
  MsgMemo->Lines->Add(Status);
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMStrmServClientContact(TObject *Sender)
{
   MsgMemo->Lines->Add("Client Connected");
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMStrmServMSG(TComponent *Sender, //receive Stream
      const AnsiString sFrom, TStream *strm)
{
  TFileStream *MyFStream;
  MyFStream = new TFileStream(SavePath, fmCreate);
  try
  {
    MyFStream->CopyFrom(strm, strm->Size);
  }
  catch(...)
  {
  }
  MyFStream->Free();
}
//-------------------------------------------------------------------------------
/*/////////////////////////////////////////////////////////////////////////////
WinSocket unit
Client
//////////////////////////////////////////////////////////////////////////////*/
//--------------------------------------------------------------------------------
void __fastcall TMainForm::ClientSocketConnect(TObject *Sender,
      TCustomWinSocket *Socket) //connected to server success
{
   StatusBar->Panels->Items[0]->Text=" 已连接上[服务端]";
   ConnectStatus=true;
   ButtonStatus();
   OutSocket=Socket;
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::ClientSocketConnecting(TObject *Sender,
      TCustomWinSocket *Socket)
{
   StatusBar->Panels->Items[0]->Text=" 正在连接[服务端]...";
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::ClientSocketDisconnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
    StatusBar->Panels->Items[0]->Text=" 断开与[服务端]连接";
    DisEnableConnect();
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::ClientSocketError(TObject *Sender,
      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
   StatusBar->Panels->Items[0]->Text=" 通信接口错误,错误代码:"+IntToStr(ErrorCode);
   DisEnableConnect();
   ErrorCode=0;
}

⌨️ 快捷键说明

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