[原創]VC成功實現重啓路由器(完整源碼)
這篇文章及源碼是在 http://blog.csdn.net/marklr/article/details/4389496 的基礎上寫的,但是內容又有些不樣。該實例在VC++6.0的控制檯下編譯通過,可以實現重啓路由器的功能,而且速度還是比較快的。不過要聲明的是:該實例佔用空間有些大(我加了一個圖標和一個版本信息就成了1.73MB),但也有可能因電腦而異。還有最關鍵的一點,360有時候報毒,但我敢肯定,本程序沒有惡意舉動(再說我又公佈了源碼,自己看看唄)。最後,說明:我自己寫文章的經驗不多,還望多多指教。文章版權沒有,隨便轉載,可以標明原鏈接,自願!
(注:我們今天講的是控制檯程序,源碼裏用WinMain函數是爲了不顯示窗口
如果要用main函數的話請在頭文件後面加一句
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
)
主要代碼(完整的)
#include <afxinet.h> //這個頭文件有許多MFC的定義,包括CString
#include <Winsock2.h> //網絡編程的頭文件
#include <stdlib.h> //雜類,裏面有很多不好分類的函數
#pragma comment(lib,"ws2_32.lib") //網絡編程的庫
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
int main(int argc,char *argv[])
{
CString strHost = _T("192.168.1.1"); //IP
CInternetSession session("Winty's Session"); //這個我也不知道
CHttpFile* pHttpFile;
CString strHeaders = _T("Authorization:Basic YWRtaW46YWRtaW4=");
//這是用戶名和密碼的base64格式,解密後是admin:admin
int err=0; //成功
try //try我不是很瞭解,自己百度搜索一下吧
{
INTERNET_PORT nPort; //端口
CString strRelativeRequestURL;
nPort = 80;
strRelativeRequestURL = "/userRpm/SysRebootRpm.htm?Reboot=%D6%D8%C6%F4%C2%B7%D3%C9%C6%F7";
CHttpConnection* pServer = session.GetHttpConnection(strHost, nPort);
pHttpFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET,strRelativeRequestURL);
pHttpFile->AddRequestHeaders(strHeaders);
pHttpFile->SendRequest();
DWORD dwStatusCode;
BOOL bSuccess;
bSuccess = pHttpFile->QueryInfoStatusCode( dwStatusCode );
CString strMsg;
strMsg.Format( "登錄到路由器失敗,錯誤信息:HttpStatusCode=%d" , dwStatusCode);
if(!bSuccess || !(dwStatusCode>=200 && dwStatusCode<300))
{
MessageBox(NULL,strMsg,"登錄路由器失敗",MB_OK);
}
}
catch(CException *e)
{
pHttpFile = NULL;
throw;
}
pHttpFile->Close();
delete pHttpFile;
session.Close();
return 0;
}
打開VC++6.0,Ctrl+N,新建一個CPP文件,把代碼複製進去,編譯運行,路由器即可重啓。
(只能重啓IP爲192.168.1.1、端口爲80、用戶名和密碼均爲admin的路由器,如果你的路由器配置不樣,請修改。本系統只支持TP-LINK路由器)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.