各位大大:
我的程式如下...因為程式很長,所以錯誤在那我也不知道....po上來麻煩各位大大幫我看一下,謝謝 p.s如果我用indy9.0來改的話會出現linking error的錯誤..用回原來的版本就可以了。
//server--------------------------------------------------------------------------- #include
#pragma hdrstop
#include "jpeg.hpp"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
AnsiString IP;
int i=1;
//---------------------------------------------------------------------------
__//--------------------------------------------------------------------------- void __fastcall TForm2::ServerSocket1Listen(TObject *Sender,
TCustomWinSocket *Socket)
{
IP=Socket->LocalHost;
}
//-------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender)
{
IdUDPServer1->DefaultPort=4000;
IdUDPServer1->Active=true;
IdTCPServer1->DefaultPort=4500;
IdTCPServer1->Active=true;
IdTCPServer2->DefaultPort=4600;
IdTCPServer2->Active=true;
IdTCPServer3->DefaultPort=4700;
IdTCPServer3->Active=true;
IdTCPServer4->DefaultPort=4800;
IdTCPServer4->Active=true;
IdTCPServer5->DefaultPort=4900;
IdTCPServer5->Active=true;
} void __fastcall TForm2::IdTCPServer1Execute(TIdPeerThread *AThread)
{
TMemoryStream *ms1=new TMemoryStream;
AThread->Connection->ReadStream(ms1, -1, false);
ms1->Position=0;
TJPEGImage *jpg = new TJPEGImage();
jpg->LoadFromStream(ms1);
jpg->CompressionQuality=100;
jpg->SaveToFile("C://錄影/" IntToStr(i) ".jpeg");
delete jpg;
delete ms1;
i ;
}
//--------------------------------------------------------------------------- void __fastcall TForm2::FormDestroy(TObject *Sender)
{ IdTCPServer1->Active=false;
IdUDPServer1->Active=false;
IdTCPServer2->Active=false;
IdTCPServer3->Active=false;
IdTCPServer4->Active=false;
IdTCPServer5->Active=false; }
//--------------------------------------------------------------------------- void __fastcall TForm2::ServerSocket1ClientConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
ListBox1->Items->Add(Socket->RemoteAddress);
}
//--------------------------------------------------------------------------- void __fastcall TForm2::ServerSocket1ClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
for(int i=0;iItems->Count;i )
{
if (ListBox1->Items->Strings[i] == Socket->RemoteAddress)
{
ListBox1->Items->Delete(i);}
}
}
//--------------------------------------------------------------------------- void __fastcall TForm2::IdTCPServer2Execute(TIdPeerThread *AThread)
{ TMemoryStream *ms1=new TMemoryStream;
AThread->Connection->ReadStream(ms1, -1, false);
ms1->Position=0;
TJPEGImage *jpg = new TJPEGImage();
jpg->LoadFromStream(ms1);
jpg->CompressionQuality=100;
jpg->SaveToFile("C://錄影/" IntToStr(i) ".jpeg");
delete jpg;
delete ms1;
i ; }
//--------------------------------------------------------------------------- void __fastcall TForm2::IdTCPServer3Execute(TIdPeerThread *AThread)
{
TMemoryStream *ms1=new TMemoryStream;
AThread->Connection->ReadStream(ms1, -1, false);
ms1->Position=0;
TJPEGImage *jpg = new TJPEGImage();
jpg->LoadFromStream(ms1);
jpg->CompressionQuality=100;
jpg->SaveToFile("C://錄影/" IntToStr(i) ".jpeg");
delete jpg;
delete ms1;
i ;
}
//--------------------------------------------------------------------------- void __fastcall TForm2::IdTCPServer4Execute(TIdPeerThread *AThread)
{
TMemoryStream *ms1=new TMemoryStream; AThread->Connection->ReadStream(ms1, -1, false);
ms1->Position=0;
TJPEGImage *jpg = new TJPEGImage();
jpg->LoadFromStream(ms1);
jpg->CompressionQuality=100;
jpg->SaveToFile("C://錄影/" IntToStr(i) ".jpeg");
delete jpg;
delete ms1;
i ;
}
//--------------------------------------------------------------------------- void __fastcall TForm2::IdTCPServer5Execute(TIdPeerThread *AThread)
{
TMemoryStream *ms1=new TMemoryStream;
AThread->Connection->ReadStream(ms1, -1, false);
ms1->Position=0;
TJPEGImage *jpg = new TJPEGImage();
jpg->LoadFromStream(ms1);
jpg->CompressionQuality=100;
jpg->SaveToFile("C://錄影/" IntToStr(i) ".jpeg");
delete jpg;
delete ms1;
i ;
}
//--------------------------------------------------------------------------- void __fastcall TForm2::Timer1Timer(TObject *Sender)
{ IdUDPServer1->Broadcast(IP,4000); }
//--------------------------------------------------------------------------- void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{ Application->Terminate();
}
//--------------------------------------------------------------------------- void __fastcall TForm2::Button2Click(TObject *Sender)
{
IdUDPServer2->DefaultPort=4100;
IdUDPServer2->Active=true;
IdUDPServer2->Broadcast("start",4100);
}
//--------------------------------------------------------------------------- void __fastcall TForm2::Button3Click(TObject *Sender)
{
IdUDPServer2->DefaultPort=4100;
IdUDPServer2->Active=true;
IdUDPServer2->Broadcast("stop",4100); }
//--------------------------------------------------------------------------- //client
//--------------------------------------------------------------------------- #include
#pragma hdrstop #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
const int ID=WM_USER 100;
int i=1;
AnsiString j;
AnsiString sz;
AnsiString az;
int cip;
AnsiString host;
int host1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
::RegisterHotKey(Handle,ID,MOD_CONTROL,VK_F8);
} void __fastcall TForm1::FormDestroy(TObject *Sender)
{
::UnregisterHotKey(Handle,ID);
IdUDPServer1->Active=false;
ClientSocket1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::HotKeys(TMessage &msg)
{
TForm::Dispatch(&msg);
::SetForegroundWindow(Handle);
if(::IsIconic(Application->Handle))
::ShowWindow(Application->Handle,SW_RESTORE);
else
::ShowWindow(Application->Handle,SW_MINIMIZE); } void __fastcall TForm1::FormActivate(TObject *Sender)
{
MkDir("C://錄影");
::ShowWindow(Application->Handle,SW_HIDE);
::ShowOwnedPopups(Application->Handle,false); }
//--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender)
{ TJPEGImage *jp = new TJPEGImage();
Graphics::TBitmap *bmpBuf;
TMemoryStream *ms1=new TMemoryStream;
HDC hdc;
int x,y;
hdc=::GetDC(0);
x=Screen->Width;
y=Screen->Height;
bmpBuf=new Graphics::TBitmap;
bmpBuf->Handle=::CreateCompatibleBitmap(hdc, x, y);
::BitBlt(bmpBuf->Canvas->Handle, 0, 0, bmpBuf->Width, bmpBuf->Height, hdc, 0, 0, SRCCOPY);
jp->Assign(bmpBuf);
jp->CompressionQuality = 10; // 設定圖像解析度(檔案大小)
jp->Compress();
jp->SaveToStream(ms1);
j=AnsiString(i);
DeleteDC(hdc);
delete bmpBuf;
i ;
delete jp;
IdTCPClient1->Connect();
IdTCPClient1->WriteStream(ms1, true, true );
IdTCPClient1->Disconnect();
} //--------------------------------------------------------------------------- void __fastcall TForm1::NMMSGServ1MSG(TComponent *Sender,
const AnsiString sFrom, const AnsiString sMsg)
{
int i; i=StrToInt(sMsg);
Timer1->Interval=i*1000;
}
//--------------------------------------------------------------------------- void __fastcall TForm1::IdUDPServer1UDPRead(TObject *Sender,
TStream *AData, TIdSocketHandle *ABinding)
{ sz.SetLength(AData->Size);
AData->Read(&sz[1], AData->Size);
IdTCPClient1->Host=sz;
ClientSocket1->Host=sz;
ClientSocket1->Active=true; }
//--------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket)
{
cip=ClientSocket1->Socket->LocalAddress.Length();
host=ClientSocket1->Socket->LocalAddress.SubString(cip,cip);
host1=StrToInt(host)%5;
Label1->Caption=IntToStr(host1); if(host1==0){
IdTCPClient1->Port=4500;
}
if(host1==1){
IdTCPClient1->Port=4600;
}
if(host1==2){
IdTCPClient1->Port=4700;
}
if(host1==3){
IdTCPClient1->Port=4800;
}
if(host1==4){
IdTCPClient1->Port=4900;
} }
//--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
ShowMessage("連線錯誤");
}
//--------------------------------------------------------------------------- void __fastcall TForm1::IdUDPServer2UDPRead(TObject *Sender,
TStream *AData, TIdSocketHandle *ABinding)
{
az.SetLength(AData->Size);
AData->Read(&az[1], AData->Size);
if(az=="start"){
Timer1->Enabled=true;}
if(az=="stop"){
Timer1->Enabled=false;}
}
//---------------------------------------------------------------------------