2024年3月9日发(作者:)
用VC编写网络远程控制程序
基于网络的远程控制是网络管理员和黑客都非常关注的网络技术。在美好的网络化社会中远程控制是技术
核心,比如将来可以一边坐在办公室里工作,一边通过网络打开家里的电饭锅做饭。简单的说,网络远程
控制技术就是可以由一台联网(互联网或局域网)的主机来操纵联网的另一台或多台主机。网络管理员用
它来实现网络的远程管理,黑客用它来占用别人的主机资源。网络远程控制实现的基础就是基于网络技术
开发的客户端(client)/服务器(server)程序,程序执行后,由客户端来操作服务器完成客户端的请求。
一、服务器程序
在VC下新建一个基于对话框的工程MiniTrojDlg,要选择支持Winsock,然后在工程中加入自己从Csocket
派生的两个类CLisenSocket和CClientSocket,CLisenSocket类用于建立监听的Socket,CClientSocket
类用于建立通信的Socket。CLisenSocket类对虚函数OnAccept()进行重载。CClientSocket类对虚函
数OnReceive()进行重载。在程序中建立一个用于监听指定端口的Socket,当有客户端请求到达后,再
新建一个用于通信的Socket与客户端Socket建立连接,处理客户端请求。如果客户端请求为发送消息,
则通过MessageBox函数显示该消息;如果客户端请求为执行命令,则调用WinExec函数执行相应命令;
如果客户端请求为截取屏幕,则获取桌面窗口DC并用DIBAPI中函数获取图象并存为DIB对象,通过与
客户端建立的连接将此DIB对象发送到客户端显示。
相关核心代码如下,详细代码请参见源程序。
ClisenSocket.h代码如下:
class CMiniTrojDlg;
// LisenSocket command target
class LisenSocket : public CSocket
{
// Attributes
public:
// Operations
public:
LisenSocket(CWnd *pWnd);
virtual ~LisenSocket();
// Overrides
public:
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(LisenSocket)
public:
virtual void OnAccept(int nErrorCode);
//}}AFX_VIRTUAL
// Generated message map functions
//{{AFX_MSG(LisenSocket)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
// Implementation
protected:
private:
CMiniTrojDlg *m_pWnd;
};
代码如下:
LisenSocket::LisenSocket(CWnd *pWnd)
{
m_pWnd=(CMiniTrojDlg *)pWnd;
}
LisenSocket::~LisenSocket()
{
}
// Do not edit the following lines, which are needed by ClassWizard.
#if 0
BEGIN_MESSAGE_MAP(LisenSocket, CSocket)
//{{AFX_MSG_MAP(LisenSocket)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
#endif // 0
// LisenSocket member functions
void LisenSocket::OnAccept(int nErrorCode)
{
m_pWnd->ProcessPendingAccept();
CSocket::OnAccept(nErrorCode);
}
CclientSocket.h代码如下:
class CMiniTrojDlg;
// CClientSocket command target
class CClientSocket : public CSocket
{
// Attributes
public:
// Operations
public:
CClientSocket(CWnd *pWnd);
virtual ~CClientSocket();
// Overrides
public:
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CClientSocket)
public:
virtual void OnReceive(int nErrorCode);
//}}AFX_VIRTUAL
// Generated message map functions
//{{AFX_MSG(CClientSocket)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
// Implementation
protected:


发布评论