當前位置:首頁 » 操作系統 » vbwinsock源碼

vbwinsock源碼

發布時間: 2022-11-06 17:22:43

『壹』 VB遠程式控制制源碼

你要求很高啊

遠程式控制制是要被控方的電腦上運行有你的程序,並沒有多麼神奇,你學下vb網路通信-winsock就可以自己編遠程式控制制的了。

比如說伺服器上有這樣的功能:如果接收到一個數據比如說"123"時就開始接收一個程序的數據包,接受完後自己解壓後運行,至於發過去的程序自然是你想怎樣就怎樣。這樣的程序如果在用戶面前明明白白地運行那就叫遠程式控制制,如果不讓用戶發現那就叫木馬。

winsock用法(轉載……)

VB winsock控制項詳解2009-09-29 14:41*屬性

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

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, "注意!"

End

End If

End Sub

Private Sub Winsock1_Close()

If Winsock1.State <> sckClosed Then Winsock1.Close

Winsock1.Listen 關閉連接後繼續監聽

End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

If Winsock1.State <> sckClosed Then Winsock1.Close

Winsock1.Accept requestID 請求到達時,接受連接

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim strget As String

Dim ccom As String

Winsock1.GetData strget 讀取到達的數據

Select Case strget

Case "a" 判斷到達的數據是否『a』,是則重啟,你也可自己定義(協議就是這樣產生的)

ccom = curr_win() + "\RUNDLL.EXE user.exe,exitwindowsexec" 不同機器設置不一樣

Call Shell(ccom, vbHide) 由函數curr_win()來判斷

Case "b" 如為『b』則關閉計算機

ccom = curr_win() + "\RUNDLL.EXE user.exe,exitwindows"

Call Shell(ccom, vbHide) 函數shell來執行命令

Case Else 可以在此加入其他命令

End Select

End Sub

Function curr_win() As String

Dim i As Integer

Dim enstr As String

i = 1 此函數通過讀取環境變數來獲得Windows目錄

enstr = Environ(i)

Do While enstr <> ""

If Len(enstr) > 11 Then

If Left(enstr, 11) = "winbootdir=" Then

curr_win = Right(enstr, Len(enstr) - 11)

Exit Do

End If

End If

i = i + 1

enstr = Environ(i)

Loop

End Function

Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal

Scode As Long, ByVal Source As String, ByVal HelpFile As String,

ByVal HelpContext As Long, CancelDisplay As Boolean)

MsgBox "錯誤", vbOKOnly, "注意!" 如程序出現錯誤,則簡單的退出

End

End Sub

--》客戶端程序(Client.exe)

程序界面如圖[control.jpg]

防入四個命令按鈕,一個標題框,一個Winsock控制項,其屬性設置如下:

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

控制項名 | 控制項類 | 屬性 | 屬性值

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

closewin_but | commandbutton | caption | 遠程關閉

startwin_but | commandbutton | caption | 遠程重啟

connect_but | commandbutton | caption | 連接

exit_but | commandbutton | caption | 退出

state_lab | label | borderstyle | 1

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

代碼如下:

Private Sub Form_Load()

Winsock1.LocalPort = 22226 本地埠可任選,只要不沖突且小於65535,用

netstat -an命令可查看當前通信進程

Winsock1.RemoteHost = "127.0.0.1" 調試時此IP將對本機操作,實際應用時可

換上被控方IP

Winsock1.RemotePort = 1334 對應伺服器端的localport

state_lab = "未建立連接."

End Sub

Private Sub closewin_but_Click()

If Winsock1.State <> sckConnected Then

state_lab = "請先建立連接"

Else

Winsock1.SendData "b" 發出關閉命令

End If

End Sub

Private Sub startwin_but_Click()

If Winsock1.State <> sckConnected Then

state_lab = "請先建立連接"

Else

Winsock1.SendData "a" 發出重啟命令

End If

End Sub

Private Sub connect_but_Click()

On Error GoTo skip

If Winsock1.State = sckConnected Then

state_lab = "已建立連接了"

Else

Winsock1.Connect

End If

Exit Sub

skip: 用netstat命令看到狀態為Time_wait則

If Err.Number = 10048 Then 須等待一段時間才可連接,也可換另一

埠,可加快連接速度

MsgBox "埠正在使用,請稍後再試!", vbOKOnly, "注意!"

End

End If

End Sub

Private Sub exit_but_Click()

Winsock1.Close 關閉連接且退出

End

End Sub

Private Sub Winsock1_Connect()

state_lab = "建立連接成功!可發送命令."

End Sub

Private Sub Winsock1_Error(ByVal Number As Integer, Description As String,

ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String,

ByVal HelpContext As Long, CancelDisplay As Boolean)

MsgBox "錯誤", vbOKOnly, "注意!"

End

End Sub

通過上面的例子,我們大概了解了遠程式控制制的原理,對於其他功能的實現應該不難了。如

文件的下載,可先讓客戶程序發一命令字串cc:\windows\lzh.pwl,伺服器接收到命令字

串後判斷出首字母c為下載命令,則將所指定的命令文件c:\windows\lzh.pwl傳送給客戶

端,完成相應的服務。需要注意的是,此程序只能建立一個連接,如要建立多個連接可通過

在伺服器端產生多個Winsock實例來接受請求.

*****測試環境:

Window98,MicroSoft Visual Basic 5.0企業版

附:屬性state值

常數 值 描述
sckClosed 0 關閉狀態
sckOpen 1 打開狀態
sckListening 2 偵聽狀態
sckConnectionPending 3 連接掛起
sckResolvingHost 4 解析域名
sckHostResolved 5 已識別主機
sckConnecting 6 正在連接
sckConnected 7 已連接
sckClosing 8 同級人員正在關閉連接
sckError 9 錯誤

『貳』 VB Winsock最簡單的;聊天程序源代碼

這個是我以前學習的一個實例。希望對你有幫助!!!

用VB實現客戶——伺服器(TCP/IP)編程實例

-
現在大多數語言都支持客戶-伺服器模式編程,其中VB給我們提供了很好的客戶-伺服器編程方式。下面我們用VB來實現TCP/IP網路編程。
TCP/IP協議是Internet最重要的協議。VB提供了WinSock控制項,用於在TCP/IP的基礎上進行網路通信。當兩個應用程序使用Socket進行網路通信時,其中一個必須創建Socket伺服器偵聽,而另一個必須創建Socket客戶去連接伺服器。這樣兩個程序就可以進行通信了。
1.創建伺服器,首先創建一個服務埠號。並開始偵聽是否有客戶請求連接。
建立一窗體,並向其增加一個Winsock控制項(可在工程菜單中的部件項來添加此控制項)
添加兩文本框Text1,Text2,和一按鈕Command1
Private Sub Form_Load()
SockServer.LocalPort = 2000 ′伺服器埠號,最好大於1000
SockServer.Listen ′開始偵聽
End Sub
Private Sub Form_Unload(Cancel As Integer)
SockServer.Close
End Sub
Private Sub SockServer_Close()
SockServer.Close
End Sub
Private Sub SockServer_ConnectionRequest(ByVal requestID As Long)
SockServer.Close
SockServer.Accept requestID ′表示客戶請求連接的ID號
End Sub
′當客戶向伺服器發送數據到達後,產生DataArrival事件,在事件中接收數據,GetData方法接收數據。
Private Sub SockServer_Data
Arrival(ByVal bytesTotal As Long)
Dim s As String
SockServer.GetData s
Text1.Text = s
End Sub
當我需要向客戶發送數據時,只需調用SendData方法。
Private Sub Command1_Click()
SockServer .SendData Text2.Text
text1.text = text2.text
text2.text = ""
End Sub
2.創建客戶。要創建客戶連接伺服器,首先設置伺服器主機名,如IP地址、域名或計算機名,然後設置伺服器埠,最後連接伺服器。
建立一窗體,並向其增加一個Winsock控制項(可在工程菜單中的部件項來添加此控制項),取名為:SockC1。添加兩文本框Text1,Text2,和一按鈕Command1
Private Sub Form_Load()
dim my as string
my = SockCl.RemoteHostIP
SockCl.RemoteHost = my
′表示伺服器主機名
SockCl.RemotePort = 2000
′表示伺服器埠名
SockCl.Connect
′連接到伺服器
End Sub
Private Sub Form_Unload(Cancel As Integer)
SockCl.Close
End Sub
Private Sub SockCl_Close()
SockCl.Close
End Sub
Private Sub SockCl_DataArrival(ByVal bytesTotal As Long)
Dim s As String
SockCl.GetData s ′接收數據到文本框中
Text1.Text = s
End Sub
Private Sub Command1_Click()
SockCl.SendData Text2.Text ′向伺服器發送數據
text1.text = text2.text
text2.text = ""
End Sub
3.進行通信。把這兩個窗體分別編譯成兩個EXE文件,伺服器Server.exe和客戶Client.exe程序,並把它們分別安裝在伺服器端和客戶端,這樣就可以實現兩者通信了。

------------------------------------整理後的代碼如下-------------------------------

Private Sub Form_Load()
Dim my As String
my = SockCl.RemoteHostIP
SockCl.RemoteHost = my
SockCl.RemotePort = 2000
SockCl.Connect
End Sub
Private Sub Form_Unload(Cancel As Integer)
SockCl.Close
End Sub
Private Sub SockCl_Close()
SockCl.Close
End Sub
Private Sub SockCl_DataArrival(ByVal bytesTotal As Long)
Dim s As String
SockCl.GetData s
Text1.Text = s
End Sub
Private Sub Command1_Click()
SockCl.SendData Text2.Text
Text1.Text = Text2.Text
Text2.Text = ""
End Sub

Private Sub Form_Load()
SockServer.LocalPort = 2000
SockServer.Listen
End Sub
Private Sub Form_Unload(Cancel As Integer)
SockServer.Close
End Sub
Private Sub SockServer_Close()
SockServer.Close
End Sub
Private Sub SockServer_ConnectionRequest(ByVal requestID As Long)
SockServer.Close
SockServer.Accept requestID
End Sub
Private Sub Command1_Click()
SockServer.SendData Text2.Text
Text1.Text = Text2.Text
Text2.Text = ""
End Sub
Private Sub SockServer_DataArrival(ByVal bytesTotal As Long)
Dim s As String
SockServer.GetData s
Text1.Text = s
End Sub

『叄』 求WinSock登錄網站VB源代碼

不用控制項,你找我!我發給你。QQ2262688

『肆』 VB WINSOCK傳文件

1.創建一個新的標准EXE文件; 2.加入一個Winsock控制項; 3.加入如下代碼: Private Sub Form Load() tcpServer.LocalPort = 1001 tcpServer.Localhost = ″servser″ tcpServer.remotePort = 1002 tcpServer.Localhost = ″klint″ tcpServer.Listen End Sub ′連接檢查 Private Sub tcpServer ConnectionRequest (ByVal requestID As Long) If tcpServer.State <> sckClosed Then tcpServer.Close tcpServer.Accept requestID End Sub ′發送數據 Private Sub frmserver monsemove(x,y) tcpServer.SendData ″x″& str(x) tcpServer.SendData ″y″& str(y) End Sub 1.創建一個新的標准EXE文件; 2.加入一個Winsock控制項; 3.加入兩個TEXT框—— txt x和 txt y; 4.加入如下代碼: Private Sub Form Load() tcpServer.LocalPort = 1002 tcpServer.Localhost = ″klint″ tcpServer.remotePort = 1001 tcpServer.Localhost = ″servser″ tcpServer.Listen End Sub ′連接檢查 Private Sub tcpklint ConnectionRequest (ByVal requestID As Long) If tcpklint.State <> sckClosed Then tcpklint.Close tcpklint.Accept requestID End Sub Private Sub tcpClient DataArrival (ByVal bytesTotal As Long) Dim strData As String tcpklint.GetData strData if left(strData,1)=″X″then txt x.Text = strData else txt y.Text = strData endif End Sub 以上常式實現的是一個非常簡單的點對點通信,在此基礎上略加改造,可以形成功能復雜的實時計算機網路A-A交互通信系統,用於控制、圖形模擬等。 使用UDP協 議建立對等通信和通過TCP建立客戶/伺服器通信的方法略有不同,它不需要建立客戶和伺服器,而是建立對等通信 1.設定Winsock的RemoteHost 屬性為一個通信的計算機名稱; 2.設定 RemotePort 為一個介面號; 3.調用Winsock的Bind 事件綁定本地的介面號。具體設定方法為: Private Sub Form Load() With Winsock1 .RemoteHost= ″PeerB″ .RemotePort = 1001 ′遠程連接號 .Bind 1002 ′綁定的本地號 End With End Sub

『伍』 VB Winsock1控制項不會用,請教啊。下面是源碼與圖

Winsock沒用過
Socket連接
服務端
Socket.Bind new IPEndPoint("127.0.0.1",10020)『綁定到本地的IP埠
socket.Listen '監聽
線程接收監聽連接
有連接創建新連接
新連接創建線程監聽會話

客戶端
socket.Connect(new IPEndPoint("127.0.0.1",10020))'連接服務端
在創建會話線程

Winsock估計也差不多 應該省去了線程吧

『陸』 在vb編程中通過winsock讓電腦重啟的程序代碼是什麼

樓主的意思是 遠程關機莫 `?
其實很好辦的··

分2個大點

一是 通過winsock建立2台電腦的連接,並由遠程電腦發送信息給 重啟電腦
二是 重啟電腦接收 並做出重啟動作

要做的話
先想好 用winsock的什麼協議 再就是 建立連接 遠程電腦發信息 重啟電腦接收到信息後執行關機動作 winsock的用法這個你可以自己在網上找一下教程 很多的·~

關機 的動作 代碼 之前的人已經說的很清楚了 我就不用多說了
Shell "Shutdown -s -t 0" 就是喵~

『柒』 求 vb中winsock一段代碼的編寫

你好,想要消息不被覆蓋,首先,要對你的text1 Text進行修改,在Form2中,點擊一下text1這個控制項,在屬性窗口中把MultiLine這個屬性值設定為true然後把屬性ScrollBars的值改成2-Vertical
再對程序代碼進行修改,在form2的程序代碼中
在Form_Load()中添加一句
Text1.text=""
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim getstr As String
Winsock1.GetData getstr
Text1.Text=Text1.text & getstr & chr(10)
End Sub

『捌』 利用VB Winsock控制項獲取網頁源碼,如何接收完整的數據及如何判斷接收完畢

網速問題,如果真想玩就弄個代理。教育網與網通電信介面都小。再不就是半夜玩。

你在網上搜代理加速器,或者網游代理就可以,選個收費的比較穩定!希望對你有幫助,如果有幫助請給好評!

熱點內容
c語言自考 發布:2025-05-15 07:52:42 瀏覽:501
壓縮的玉 發布:2025-05-15 07:51:22 瀏覽:789
android的控制項 發布:2025-05-15 07:50:36 瀏覽:552
南崗法院伺服器ip地址 發布:2025-05-15 07:46:02 瀏覽:288
實況如何退出賬號安卓 發布:2025-05-15 07:45:56 瀏覽:918
深入編譯器 發布:2025-05-15 07:41:35 瀏覽:879
電信手機號服務密碼怎麼查 發布:2025-05-15 07:40:10 瀏覽:613
python全局變數文件 發布:2025-05-15 07:35:06 瀏覽:955
位元組和存儲位元組 發布:2025-05-15 07:32:10 瀏覽:522
linux應用開發工程師 發布:2025-05-15 07:32:07 瀏覽:261