当前位置:首页 » 操作系统 » 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控件获取网页源码,如何接收完整的数据及如何判断接收完毕

网速问题,如果真想玩就弄个代理。教育网与网通电信接口都小。再不就是半夜玩。

你在网上搜代理加速器,或者网游代理就可以,选个收费的比较稳定!希望对你有帮助,如果有帮助请给好评!

热点内容
4k无压缩 发布:2025-05-15 06:02:54 浏览:74
hp存储6350 发布:2025-05-15 05:40:41 浏览:233
怎么更改电脑默认缓存位置 发布:2025-05-15 05:39:01 浏览:877
安卓qq公孙离在哪个战区战力最低 发布:2025-05-15 05:38:58 浏览:493
androidffmpeg压缩 发布:2025-05-15 05:37:02 浏览:288
ftp简称是 发布:2025-05-15 05:37:02 浏览:121
光遇发光耳机怎么设置安卓 发布:2025-05-15 05:32:03 浏览:113
台电安卓平板系统太低怎么办 发布:2025-05-15 05:20:00 浏览:510
安装了zlib编译报错 发布:2025-05-15 05:19:56 浏览:168
二分算法无序 发布:2025-05-15 05:18:22 浏览:30