用VB編程序

     只要掌握了原理,你也能寫出一個所謂的「***」程序。下面筆者帶領你們用VB親自編寫一個遠程控制程序。從而揭開它的神祕面紗。
    1、所用控件
在程序中將使用Winsock控件。Winsock控件是一個ActiveX控件,使用TCP協議或UDP協  議鏈接到遠程計算機上並與之交換數據。和定時器控件同樣,Winsock控件在運行時是不可見的。Winsock的工做原理是:客戶端向服務器端發出鏈接請求,服務器端則不停地監聽客戶端的請求,當二者的協議溝通時,客戶端和服務器端之間就創建了鏈接,這時客戶端和服務器端就能夠實現雙向數據傳輸。實際編程中,必須分別創建一個服務器端應用程序和一個客戶端應用程序,兩個應用程序中分別有本身的Winsock控件。首先設置Winsock控件使用的協議,這裏咱們使用TCP協議。如今,讓咱們開始用VB創建兩個程序,一個是客戶端程序myclient,另外一個是服務器端程序myserver。
    2、編寫客戶端程序
首先來建客戶端程序myclient。在myclient程序中創建一個窗體,加載Winsock控件,稱爲tcpclient,表示使用的是 TCP協議,再加入兩個文本框(text1和text2),用來輸入服務器的IP地址和端口號,而後創建一個按鈕(cd1),用來創建鏈接,按下以後就能夠對鏈接進行初始化了,代碼以下:
private sub cd1_click()
tcpclient.romotehost=text1.text
tcpclient.romoteport=val(text2.text)'端口號,缺省爲1001
tcpclient.connect '調用connect方法,與指定IP地址的計算機進行鏈接
cd1.enabled=false
end sub
鏈接以後就是如何處理所收到的數據的問題了。客戶端和服務器端創建鏈接後,若是有任何一端接收到新的數據,就會觸發該端winsock控件的 dataarrival事件,在響應這個事件時,可使用getdata方法得到發送來的數據。好比能夠在tcpclient的dataarrival事件中編寫代碼以下:
private sub tcpclient_dataarrival(byval bytestotal as long)
dim x as string
tcpclient.getdata x '使用getdata得到發送來的數據
.......
End sub
後面的省略部分表示對接收到的數據進行的具體處理,讀者能夠根據實際狀況編寫。
    3、編寫服務器端程序
    先創建一個窗體,加載Winsock控件,名稱爲tcpserver。另外在窗體上加入一個文本框text1用來顯示客戶機的IP地址和客戶機發送過來的數據信息。
當客戶端程序運行時,在客戶端程序按下鏈接按鈕後,客戶端向服務器端程序請求鏈接,這時服務器端的connectionrequest事件被觸發,因此服務器端程序要解決鏈接問題,可使用connectionrequest事件完成此功能。代碼以下:
'在窗體的load事件中對tcpserver控件進行初始化
private sub form_load()
tcpserver.localport=1001
tcpserver.listen '把服務器置於監聽檢測狀態
end sub
'服務器端接收到客戶端的鏈接請求,首先檢查當前狀態是否處於鏈接關閉狀態
Private sub tcpclient_connectionrequest(Byval requestID as long)
If tcpserver.state<>sckclosed then '檢查控件的state屬性是否爲關閉
Tcpserver.close '
Tcpserver.accept requestID '
End if
End sub
如今咱們在服務器端程序tcpserver的dataarrival事件中添加如下代碼,以便讓服務器端程序能夠接收客戶機端的指令,並運行相應的程序。
    4、測試遠程控制程序
    如今,你就能夠將這兩個程序分別運行於兩臺使用TCP/IP協議聯網的機器了。在客戶機端你按下鏈接按鈕,再輸入「c:mmand.com」,能夠看到在服務器端馬上打開一個DOS窗口,設想一下,若是它運行一些破壞性的命令會發生什麼事情?這就是一個最基本的遠程控制程序。固然,真正的***程序要複雜得多,但基本原理是相同的。如今你該恍然大悟了吧?
相關文章
相關標籤/搜索