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

📄 main.cpp

📁 Server application. Unused without client application...
💻 CPP
字号:
//----------------------------------------------------------------------------
//Borland C++Builder
//Copyright (c) 1987, 1997-2002 Borland International Inc. All Rights Reserved.
//----------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "main.h"
#include <stdio.h>
//---------------------------------------------------------------------------
#pragma link "ScktComp"
#pragma resource "*.dfm"
TChatForm *ChatForm;
//---------------------------------------------------------------------------
__fastcall TChatForm::TChatForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
AnsiString __fastcall TChatForm::FormatSize(double value)   // pass in Kbytes
{
    AnsiString str_to_return;

    if ((value < -1000) || (value > 10000))
    {
       value = value / 1024;
       if ((value < -1000) || (value > 10000))
       {
          value = value / 1024;
          str_to_return = FloatToStrF(value,ffNumber,15,2) + " GB";
       }
       else
          str_to_return = FloatToStrF(value,ffNumber,15,2) + " MB";
    }
    else
    if (value < 1.0)
    {
        value = value * 1024;
        str_to_return = AnsiString((int)value) + " Bytes";
    }
    else
      str_to_return = AnsiString((int)value) + " KB";

    return str_to_return;
}
//---------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::FileConnectItemClick(TObject *Sender)
{
  if (ClientSocket->Active)
  { 
    ClientSocket->Active = false;
  }   
  if (InputQuery("Computer to connect to", "Address Name:", Server))
  {
     if (Server.Length() > 0)
     {
        ClientSocket->Host = Server;
        ClientSocket->Active = true;
        FileListenItem->Checked = false;  
     }
  }
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::Exit1Click(TObject *Sender)
{
  ServerSocket->Close();
  ClientSocket->Close();
  Close();   
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::ClientSocketConnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
  StatusBar1->Panels->Items[0]->Text = "Connect to: " + Socket->RemoteHost;
  Disk.IP = Socket->LocalAddress;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::Disconnect1Click(TObject *Sender)
{
  ClientSocket->Active = false;
  ServerSocket->Active = false;
  StatusBar1->Panels->Items[0]->Text = "Listening...";
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::ServerSocketAccept(TObject *Sender,
      TCustomWinSocket *Socket)
{
  IsServer = true;
  StatusBar1->Panels->Items[0]->Text = "Connect to: " + Socket->RemoteAddress;
//  Disk.IP =  Socket->RemoteAddress;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::ClientSocketError(TObject *Sender,
      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
  StatusBar1->Panels->Items[0]->Text = "Error connecting";
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::ServerSocketClientDisconnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
  StatusBar1->Panels->Items[0]->Text = "Listening...";
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TChatForm::ButtonGetDriveInfoClick(TObject *Sender)
{
  AnsiString temp;
  AnsiString Drive = AnsiString(DriveComboBox1->Drive) + ":\\"; //EditDrive->Text;
  Disk.drive_name = AnsiString(DriveComboBox1->Drive);
  unsigned int drivetype = GetDriveType(Drive.c_str ());

  switch (drivetype)
  {
    case 1	: temp = "No root directory";   return;
    case DRIVE_REMOVABLE : temp = "Removable";  break;
    case DRIVE_FIXED     : temp = "Fixed";      break;
    case DRIVE_REMOTE    : temp = "Remote (network) drive";  break;
    case DRIVE_CDROM     : temp = "CD-ROM";     break;
    case DRIVE_RAMDISK   : temp = "RAM disk";   break;
    default:	temp = "Unknown"; return;
  }

  LabelDriveType->Caption = temp;
  temp = "";
  DWORD VolumeSerialNumber = 0;
  DWORD MaximumComponentLength = 0;
  DWORD FileSystemFlags = 0;
  char * volumeinfo = new char[255];
  volumeinfo[0] = 0;
  char* FileSystemNameBuffer = new char[255];
  FileSystemNameBuffer[0] = 0;
  GetVolumeInformation (Drive.c_str (), volumeinfo,
                            255, &VolumeSerialNumber,
                            &MaximumComponentLength, &FileSystemFlags, FileSystemNameBuffer,255);
    if (strlen(volumeinfo) != 0)
        EditVolumeInfo->Text = volumeinfo ;
    else
        EditVolumeInfo->Text = "- no label -";


    //Translate integer to chars for serial number
    char string1[35];
    char string2[35];
    if (VolumeSerialNumber > 0)
    {
      unsigned int bottom = (LOWORD(VolumeSerialNumber));
      unsigned int top = (HIWORD(VolumeSerialNumber));
      sprintf(string1,"%04X",top);
      sprintf(string2,"%04X",bottom);
      LabelSerialNum->Caption = AnsiString(string1) + "-" + AnsiString(string2);
    }
    else
      LabelSerialNum->Caption = "- unknown -";
    if (MaximumComponentLength > 0)
      LabelMaxComponentLength->Caption = AnsiString(MaximumComponentLength) + " characters";
    else
      LabelMaxComponentLength->Caption = "- unknown -";
    if (strlen(FileSystemNameBuffer) != 0)
        LabelFileSystemNameBuffer->Caption = FileSystemNameBuffer;
    else
        LabelFileSystemNameBuffer->Caption = "- unknown -";

    LabelFileSystemFlags->Caption = ""; //AnsiString(FileSystemFlags);
    if (FileSystemFlags & FS_CASE_IS_PRESERVED)
         temp += AnsiString("Filename case is preserved.\n");
    if (FileSystemFlags & FS_CASE_SENSITIVE)
         temp += AnsiString("Lookup is case-sensitive.\n");
    if (FileSystemFlags & FS_UNICODE_STORED_ON_DISK)
         temp += AnsiString("Supports Unicode in filenames.\n");
    if (FileSystemFlags & FS_PERSISTENT_ACLS)
         temp += AnsiString("Preserves and enforces ACLs.\n");
    if (FileSystemFlags & FS_FILE_COMPRESSION)
         temp += AnsiString("Supports file-based compression.\n");
    if (FileSystemFlags & FS_VOL_IS_COMPRESSED)
         temp += AnsiString("Volume is compressed. (i.e., DoubleSpace).\n");
    LabelFileSystemFlags->Caption = temp;

    DWORD spc = 0;    //Sectors per cluster
    DWORD bps = 0;    //Bytes per cluster
    DWORD cluster = 0;   //clusters
    DWORD freeclust = 0;   //freeclusters

    GetDiskFreeSpace (Drive.c_str (),&spc,&bps,&freeclust,&cluster) ;
    unsigned long v1 = (unsigned long)cluster;
    unsigned long v2 = (unsigned long) spc;
    unsigned long v3 = (unsigned long) bps;

    unsigned long volsize = (v1 * v2)/1024 * v3;
    LabelVolumeSize->Caption = AnsiString(FormatSize(volsize));
    Disk.volume_size = AnsiString(FormatSize(volsize));
    unsigned long free_bytes = (freeclust * spc)/1024 * bps;
    LabelFreeSpace->Caption = AnsiString(FormatSize(free_bytes));
    Disk.free = AnsiString(FormatSize(free_bytes));
    if (volsize > 0)
        LabelUsed->Caption = AnsiString(((volsize - free_bytes) * 100) / volsize) +  " %";
    else
        LabelUsed->Caption = "n/a";
}


void __fastcall TChatForm::Button1Click(TObject *Sender, TCustomWinSocket *Socket)
{
ClientSocket->Socket->SendText("Free  " + Disk.free +  "       ");
ClientSocket->Socket->SendText("Disk name  " + Disk.drive_name+":" + "       ");
ClientSocket->Socket->SendText("Volume  " + Disk.volume_size +  "      ");
ClientSocket->Socket->SendText("IP  " + Disk.IP +  "      ");
}

⌨️ 快捷键说明

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