主题:网络编程高手请进
各位大哥,小弟头次编socket的程序,现在遇到一点问题,麻烦各位解决一下,我做的是一个类似远程
控制的程序,在程序开始的时候让clientsocket和serversocket相连,clientsocket向serversocket发送
一个指令,激活seversocket端的timer,让seversocket端开始获得屏幕图案并且发送过来。
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if(flag==1)
{
Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap();
HDC hdc;
TJPEGImage *jp = new TJPEGImage();
HWND hwnd=GetDesktopWindow();
TMemoryStream* stream = new TMemoryStream();
hdc=GetWindowDC(hwnd);
Bitmap1->Width=GetSystemMetrics(SM_CXSCREEN);
Bitmap1->Height=GetSystemMetrics(SM_CYSCREEN);
BitBlt(Bitmap1->Canvas->Handle,0,0,Bitmap1->Width,Bitmap1->Height,hdc,0,0,SRCCOPY);
jp->Assign(Bitmap1);
stream->Position = 0;
jp->SaveToStream(stream);
NMStrm1->Host=ServerSocket1->Socket->RemoteHost;
NMStrm1->PostIt(stream);
ReleaseDC(hwnd,hdc);
delete Bitmap1;
delete stream;
delete jp;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMStrm1Connect(TObject *Sender)
{
flag=1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMStrm1Disconnect(TObject *Sender)
{
flag=0;
}
clientsocket端的屏幕接收程序是这样的
void __fastcall TForm1::NMStrmServ1MSG(TComponent *Sender,
const AnsiString sFrom, TStream *strm)
{
TJPEGImage *jp = new TJPEGImage();
strm->Position = 0;
jp->LoadFromStream(strm);
Image1->Picture->Assign(jp);
delete jp;
}
还有一个是发送关机指令的,serversocket端单独运行的时候关机没有问题,可是接受clientsocket发送的指令后不能关机
不知道有没有人有这样的经验,如果有需要的话,我可以把程序发给你们。
如果有这样的实例可不可以发给我,chenzhou851025@163.com
我先谢谢大家了,
控制的程序,在程序开始的时候让clientsocket和serversocket相连,clientsocket向serversocket发送
一个指令,激活seversocket端的timer,让seversocket端开始获得屏幕图案并且发送过来。
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if(flag==1)
{
Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap();
HDC hdc;
TJPEGImage *jp = new TJPEGImage();
HWND hwnd=GetDesktopWindow();
TMemoryStream* stream = new TMemoryStream();
hdc=GetWindowDC(hwnd);
Bitmap1->Width=GetSystemMetrics(SM_CXSCREEN);
Bitmap1->Height=GetSystemMetrics(SM_CYSCREEN);
BitBlt(Bitmap1->Canvas->Handle,0,0,Bitmap1->Width,Bitmap1->Height,hdc,0,0,SRCCOPY);
jp->Assign(Bitmap1);
stream->Position = 0;
jp->SaveToStream(stream);
NMStrm1->Host=ServerSocket1->Socket->RemoteHost;
NMStrm1->PostIt(stream);
ReleaseDC(hwnd,hdc);
delete Bitmap1;
delete stream;
delete jp;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMStrm1Connect(TObject *Sender)
{
flag=1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMStrm1Disconnect(TObject *Sender)
{
flag=0;
}
clientsocket端的屏幕接收程序是这样的
void __fastcall TForm1::NMStrmServ1MSG(TComponent *Sender,
const AnsiString sFrom, TStream *strm)
{
TJPEGImage *jp = new TJPEGImage();
strm->Position = 0;
jp->LoadFromStream(strm);
Image1->Picture->Assign(jp);
delete jp;
}
还有一个是发送关机指令的,serversocket端单独运行的时候关机没有问题,可是接受clientsocket发送的指令后不能关机
不知道有没有人有这样的经验,如果有需要的话,我可以把程序发给你们。
如果有这样的实例可不可以发给我,chenzhou851025@163.com
我先谢谢大家了,