標題: 手機遠控電腦程序的編寫思路 [打印本頁]

作者: liuyuxi    時間: 2015-1-11 02:32
標題: 手機遠控電腦程序的編寫思路
     原本是一個獨立的程序,只是因為功能很少就整合在【短信遠控電腦 V2.0 Bate】里面。并更名為【手機遠控電腦 V3.0 Bate】(總覺得這個名字有點拗口..)。

    設(shè)計這個程序初是因為我的一個朋友覺得【短信遠控電腦 V2.0 Bate】這個程序要花錢。因為是用短信來控制的。(我覺得很郁悶...)
建議我設(shè)計一個可以用手機瀏覽器來控制電腦的程序(現(xiàn)在設(shè)計完了,我的朋友又覺得沒多大用處。我表示很糾結(jié)...)

    這個程序?qū)崿F(xiàn)原理還得謝謝小凡,不然我肯定是沒法完成的。感激吖~~~ 每次遇到問題,他都很有耐心解答。太TMD感動了...

實現(xiàn)原理:
        在設(shè)計前,需要了解一下HTTP協(xié)議。

================================================================================================
協(xié)議頭:
    GET / HTTP/1.1 //第一個GET代表方法  這兩種都是合法的
    GET /index.html HTTP/1.1;
    GET
http://www.hao123.com/index.html HTTP/1.1
    一般第二種形式很少 在代理訪問時才會是這種形式

    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/rar */*
    接受文件的類型  上面那些是文件描述 固定的
    Accept-Language: zh-cn  
    標識 自然語言

    Accept-Encoding: gzip, deflate
    支持的壓縮方式

    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)
    瀏覽器標識
    當年騰訊網(wǎng)頁全面拒絕360瀏覽器,就是通過這個實現(xiàn)的
    Host: 192.168.1.5

    Connection: Keep-Alive
    這句話 我的理解是 客戶端允許不斷開TCP連接
    具體應(yīng)用,百度搜索引擎里,聯(lián)想搜索,肯定沒有斷開

==================================================================================================
先用 recv 阻塞函數(shù) 等待瀏覽器的訪問,如果有用戶使用瀏覽器訪問的話
那么 recv 會接受到 瀏覽器的請求數(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


注意第一個: GET / HTTP/1.1   ,我們可以分析得到的數(shù)據(jù),看看 如果發(fā)現(xiàn)有GET / HTTP/1.1 說明是瀏覽器訪問的,那么我們就可以將預先設(shè)計好的HTML文件 用 send 發(fā)送給對方。在發(fā)送前需要先發(fā)送一個協(xié)議頭。
HTTP/1.1 200 OK                                          // 標識成功
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ā)送預先設(shè)計的HTML文件。這樣對方的瀏覽器就能完整的顯示出你發(fā)送過去的網(wǎng)頁。
當對方點擊你發(fā)送的HTML文件中的某一個超鏈接,例如 超鏈接指向的是 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ù)這個信息得到對方點擊的是哪個超鏈接,那么我們就反饋相應(yīng)的HTML網(wǎng)頁。
你可以通過抓包工具得到我的程序發(fā)送、接受的數(shù)據(jù)包。在我的程序中,操作電腦的超鏈接所指向的頁面,實際上是不存在的。
例如,在【進程管理】的頁面中,【結(jié)束 PID】 的超鏈接所指向的頁面假如是:KILLPID2003.html。(2003 是進程的PID)這個頁面實質(zhì)上不存在的。目的只是想通過超連接得到用戶所要結(jié)束的 PID。假設(shè)用戶點擊了這個超鏈接,那么得到的數(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,那么就可以遍歷進程,對比PID,結(jié)束相對應(yīng)的PID進程就行了,然后重新遍歷進程列表,生成HTML文件發(fā)送給對方。
整個程序運行的原理大概就是這個樣子。只要你遵循數(shù)據(jù)包的格式發(fā)送數(shù)據(jù)就一定可以成功的。
======================================================================================================

    【手機遠控電腦 V3.0 Bate】分兩個模式:一個是短信模式,一個瀏覽器模式。
    現(xiàn)在主要看看 瀏覽器模式。(手機或電腦的瀏覽器均可登錄操作...)
    主界面:



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



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


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


    這個是【進程管理】頁面:








歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1