程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 你也可以YAI--VB5中Winsock控件的使用

你也可以YAI--VB5中Winsock控件的使用

編輯:VB綜合教程

  前一段時間,一個名叫YAI的‘病毒’在我國鬧的沸沸揚揚,許多不明真相的人

  對他感到神秘莫測,可是究其實質無非也就是一個遠程控制軟件罷了,只不過他的

  服務器端程序隱藏的十分好而已。其實在VB5中有一個基於TCP\IP協議的Winsock控

  件,利用他改改屬性,寫幾段代碼,我們同樣可以來一回YAI.

  由於篇幅所限,在這裡我們只來看看對遠程計算機的重啟,關閉功能室如何實現

  的。打開VB5後,在工具箱中並不能看到Winsock控件,通過鼠標右鍵單擊工具箱點

  “部件”,再將“Microsoft Winsock Control 5.0”選中確定後,就可以將Winsock

  控件添加到工具箱中了。

  遠程控制功能是基於客戶機/服務器這一模型來實現的,所以程序的編制也應分兩

  部分進行:一部分是服務器端--也就是被控制的一方,另一部分是客戶端--控制方。

  服務器程序要守侯在一個固定或不固定的網址(IP)上等待客戶程序的請求;客戶程序

  則向服務器程序所在的網址請求連接,連接成功後通過交換信息即可得到相應的服務。

  因此設置Winsock屬性時,服務器端應設置LocalPort和應用Listen方法進行監聽,客

  戶程序則要設置RemoteHost和RemotePort及應用Connect方法請求連接,並用Senddata

  方法互換信息。下面是Winsock控件的相關屬性,方法和事件。(略去一些暫用不到的)

  *屬性

  -------------------------------------------------------------------------

  LocalHostName | 本地機器名

  LocalIP | 本地機器IP地址

  LocalPort | 本地機器通信程序的端口(0<端口<65536)

  RemoteHost | 遠程機器名

  RemotePort | 遠程機器的通信程序端口

  state | 連接的當前狀態(文後有詳細說明)

  Protocal | 使用TCP或UDP協議(這裡我們選‘0-sckTCPProtocal’)

  --------------------------------------------------------------------------

  *方法

  --------------------------------------------------------------------------

  Listen

  Listen方法用於服務器程序,等待客戶訪問。

  格式:Winsock對象.listen

  Connect

  Connect方法用於向遠程主機發出連接請求

  格式:Winsock對象.connect [遠程主機IP,遠程端口]

  Accept

  Accept方法用於接受一個連接請求

  格式:Winsock對象.accept Request ID

  Senddata

  此方法用於發送數據

  格? Winsock對象.senddata 數據

  Getdata

  用來取得接收到的數據

  格式:Winsock對象.getdata 變量 [,數據類型 [,最大長度]]

  Close

  關閉當前連接

  格式:Winsock對象.close

  *事件

  ----------------------------------------------------------------------------

  Close | 遠程機器關閉連接時觸發

  Connect | 連接建立好,可以進行通信時觸發(客戶端)

  ConnectRequest | 有請求連接到達時產生(服務器端)

  DataArrival | 有數據到達時觸發

  Error | 發生錯誤時發生

  SendProgress | 數據傳送進度

  -----------------------------------------------------------------------------

  程序代碼如下:

  --》服務器端程序(server.exe)

  先在窗體中放置Winsock控件(他在運行時是看不見的),屬性采用默認值,再設置Form1的

  屬性ShowInTaskBar為False,Visible為False(這樣才有隱蔽性嘛).對於程序的自啟動可

  手工在注冊表“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run”

  中增加鍵值"winserver"="c:\\windows\\server.exe"或配置文件Win.ini的Load,run寫入

  "C:\windows\server.exe"來達到目的。當然也可通過在VB5中調用API函數來實現對注冊表

  的寫入,這就更方便了,不過由於實現過程較復雜,就不在這裡說了.

  Private Sub Form_Load()

  On Error GoTo skip 如此端口已有通信程序則退出

  Winsock1.LocalPort = 1334 端口值應大於1024,如還有沖突可改為其他值

  Winsock1.Listen

  Exit Sub

  skip:

  If Err.Number = 10048 Then

  MsgBox "端口沖突,退出!", vbOKOnly, "注意!"

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved