你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 计算机安全与维护
远程开机关机(五)
 

CRemoteOnOffDlg *PowerDlg=(CRemoteOnOffDlg*)AfxGetApp()->GetMainWnd();

    while(1)

    {  

SockAccept=accept(PowerDlg->m_SockListen,(sockaddr*)&clientaddr,&iAddrLen);

        ulClientIpAddr=clientaddr.sin_addr.s_addr;

        for(int i=0;i<PowerDlg->m_ListHostInfo.GetItemCount();i++)

        {  

strIpAddr=PowerDlg->m_ListHostInfo.GetItemText(i,2);

            if(ulClientIpAddr==inet_addr(strIpAddr))

            {  

PowerDlg->m_SockClient[i]=SockAccept;

//为了知道哪些客户机已建立了连接,我顺便在ListCtrll控件中对应连接客户机那一行的第五列打""作为标记:

                PowerDlg->m_ListHostInfo.SetItemText(i,4,"");

                break;

            }

        }

    }

}

最后在用户点击关机按钮或菜单时发送自定义的关机命令字符串:

POSITION pos=m_ListHostInfo.GetFirstSelectedItemPosition(); 

 while(pos)  

 { 

int nItem=m_ListHostInfo.GetNextSelectedItem(pos);//获取选择项

    send(m_SockClient[nItem],"POWOFF",COM_STR_LEN,0);

    closesocket(m_SockClient[nItem]);//关闭套接字

    m_ListHostInfo.SetItemText(nItem,4,"×");

}  

2)客户端

先解析服务器名,然后用s o c k e t创建一个套接字,再用c o n n e c t创建与服务器的连接。最后等待接收关机命令字符串:

CString strServerIPAddr="192.168.1.1";//此处为服务端的IP地址

SOCKET SockClient;

sockaddr_in ServerSockAddr;

ServerSockAddr.sin_addr.s_addr=inet_addr(strServerIPAddr);

ServerSockAddr.sin_family=AF_INET;

ServerSockAddr.sin_port=htons(SERVER_PORT);

SockClient=socket(AF_INET,SOCK_STREAM,0);  

while(connect(SockClient,(sockaddr*)&ServerSockAddr,sizeof(ServerSockAddr))!=0);

int iAllRecvLen=0,iThisRecvLen=0;

char strRecvBuf[COM_STR_LEN+1]="";

while(iThisRecvLen!=SOCKET_ERROR&&iAllRecvLen<COM_STR_LEN)

{  

  推荐精品文章

·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录
·2023年4月目录 
·2023年3月目录 
·2023年2月目录 
·2023年1月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089