|
原本是一個(gè)獨(dú)立的程序,只是因?yàn)楣δ芎苌倬驼显凇径绦胚h(yuǎn)控電腦 V2.0 Bate】里面。并更名為【手機(jī)遠(yuǎn)控電腦 V3.0 Bate】(總覺得這個(gè)名字有點(diǎn)拗口..)。
設(shè)計(jì)這個(gè)程序初是因?yàn)槲业囊粋(gè)朋友覺得【短信遠(yuǎn)控電腦 V2.0 Bate】這個(gè)程序要花錢。因?yàn)槭怯枚绦艁砜刂频摹#ㄎ矣X得很郁悶...)
建議我設(shè)計(jì)一個(gè)可以用手機(jī)瀏覽器來控制電腦的程序(現(xiàn)在設(shè)計(jì)完了,我的朋友又覺得沒多大用處。我表示很糾結(jié)...)
這個(gè)程序?qū)崿F(xiàn)原理還得謝謝小凡,不然我肯定是沒法完成的。感激吖~~~ 每次遇到問題,他都很有耐心解答。太TMD感動(dòng)了...
實(shí)現(xiàn)原理:
在設(shè)計(jì)前,需要了解一下HTTP協(xié)議。
================================================================================================
協(xié)議頭:
GET / HTTP/1.1 //第一個(gè)GET代表方法 這兩種都是合法的
GET /index.html HTTP/1.1;
GET http://www.hao123.com/index.html HTTP/1.1
一般第二種形式很少 在代理訪問時(shí)才會(huì)是這種形式
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/rar */*
接受文件的類型 上面那些是文件描述 固定的
Accept-Language: zh-cn
標(biāo)識(shí) 自然語言
Accept-Encoding: gzip, deflate
支持的壓縮方式
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)
瀏覽器標(biāo)識(shí)
當(dāng)年騰訊網(wǎng)頁全面拒絕360瀏覽器,就是通過這個(gè)實(shí)現(xiàn)的
Host: 192.168.1.5
Connection: Keep-Alive
這句話 我的理解是 客戶端允許不斷開TCP連接
具體應(yīng)用,百度搜索引擎里,聯(lián)想搜索,肯定沒有斷開
==================================================================================================
先用 recv 阻塞函數(shù) 等待瀏覽器的訪問,如果有用戶使用瀏覽器訪問的話
那么 recv 會(huì)接受到 瀏覽器的請(qǐng)求數(shù)據(jù)包:
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; 360SE)
Host: 192.168.1.5
Connection: Keep-Alive
注意第一個(gè): GET / HTTP/1.1 ,我們可以分析得到的數(shù)據(jù),看看 如果發(fā)現(xiàn)有GET / HTTP/1.1 說明是瀏覽器訪問的,那么我們就可以將預(yù)先設(shè)計(jì)好的HTML文件 用 send 發(fā)送給對(duì)方。在發(fā)送前需要先發(fā)送一個(gè)協(xié)議頭。
HTTP/1.1 200 OK // 標(biāo)識(shí)成功
Server: L、 // 服務(wù)器的名字
Content-Length: 1514 // html文件的大小 很重要滴
Content-Type: text/html;charset=GB2312 // 編碼方式
Expires: Sat, 28 Jan 2012 02:58:38 GMT
Connection: close // 我的理解是可以斷開的TCP連接
再緊接著發(fā)送預(yù)先設(shè)計(jì)的HTML文件。這樣對(duì)方的瀏覽器就能完整的顯示出你發(fā)送過去的網(wǎng)頁。
當(dāng)對(duì)方點(diǎn)擊你發(fā)送的HTML文件中的某一個(gè)超鏈接,例如 超鏈接指向的是 l.html 頁面。那么我們得到的數(shù)據(jù)包就是:
GET /l.html HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://192.168.1.5/
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; 360SE)
Host: 192.168.1.5
Connection: Keep-Alive
注意第一行:GET /l.html HTTP/1.1
我們就可以根據(jù)這個(gè)信息得到對(duì)方點(diǎn)擊的是哪個(gè)超鏈接,那么我們就反饋相應(yīng)的HTML網(wǎng)頁。
你可以通過抓包工具得到我的程序發(fā)送、接受的數(shù)據(jù)包。在我的程序中,操作電腦的超鏈接所指向的頁面,實(shí)際上是不存在的。
例如,在【進(jìn)程管理】的頁面中,【結(jié)束 PID】 的超鏈接所指向的頁面假如是:KILLPID2003.html。(2003 是進(jìn)程的PID)這個(gè)頁面實(shí)質(zhì)上不存在的。目的只是想通過超連接得到用戶所要結(jié)束的 PID。假設(shè)用戶點(diǎn)擊了這個(gè)超鏈接,那么得到的數(shù)據(jù)包就是:
GET /KILLPID2003.html HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://192.168.1.5/GetWindow.html
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; 360SE)
Host: 192.168.1.5
Connection: Keep-Alive
注意第一行:GET /KILLPID2003.html HTTP/1.1 ,我們可以分析這一句。得到的PID是2003,那么就可以遍歷進(jìn)程,對(duì)比PID,結(jié)束相對(duì)應(yīng)的PID進(jìn)程就行了,然后重新遍歷進(jìn)程列表,生成HTML文件發(fā)送給對(duì)方。
整個(gè)程序運(yùn)行的原理大概就是這個(gè)樣子。只要你遵循數(shù)據(jù)包的格式發(fā)送數(shù)據(jù)就一定可以成功的。
======================================================================================================
【手機(jī)遠(yuǎn)控電腦 V3.0 Bate】分兩個(gè)模式:一個(gè)是短信模式,一個(gè)瀏覽器模式。
現(xiàn)在主要看看 瀏覽器模式。(手機(jī)或電腦的瀏覽器均可登錄操作...)
主界面:

這個(gè)是啟動(dòng)之后的頁面,注意,內(nèi)網(wǎng)的要在路由設(shè)置端口映射,然后在 希網(wǎng)動(dòng)態(tài)域名或花生殼等 申請(qǐng)免費(fèi)的動(dòng)態(tài)域名。
再將域名指向自己的外網(wǎng)IP。手機(jī)就可以通過域名訪問連接到你的電腦。還有一點(diǎn),ADSL 用戶要通外網(wǎng)是無法用 80 端口的。被營運(yùn)商出于某種目的給故意屏蔽了。
由于采用 POST 方式,接收不到手機(jī)瀏覽器發(fā)送的口令(原因不詳),所以只能暫用GET 方式提交表單。

這個(gè)是【功能區(qū)】,暫時(shí)只有四個(gè)功能:【窗口管理】、【進(jìn)程管理】、【重啟系統(tǒng)】、【關(guān)閉系統(tǒng)】。

這個(gè)是【窗口管理】頁面(粉紅色的是被隱藏的窗口):

這個(gè)是【進(jìn)程管理】頁面:

|
|