'下面是源程序
Option Explicit
' 结构体变量声明
Private Type sockaddr
sin_family As Integer
sin_port As Integer
sin_addr As Long
sin_zero As String * 8
End Type
Private Type WSADataType
wVersion As Integer
wHighVersion As Integer
szDescription As String * 257
szSystemStatus As String * 129
iMaxSockets As Integer
iMaxUdpDg As Integer
lpVendorInfo As Long
End Type
' TCP选项
Private Const AF_INET = 2 'TCP、UDP协议
' 连接类型
Private Const SOCK_DGRAM = 2 ' 数据报式socket
' 地址常量
Private Const INADDR_ANY = &H0
Private Const SOL_SOCKET = &HFFFF&
Private Const INVALID_SOCKET = -1
Private Const SOCKET_ERROR = -1
' 协议类型
Private Const IPPROTO_UDP = 17 ' 用户数据报协议
' 选项标志
Private Const SO_BROADCAST = &H20 ' 允许发送广播信息
' 其他
Private Const BUF_LEN = 102 ' 缓冲区大小
' API函数声明
Private Declare Function socket Lib "ws2_32.DLL" (ByVal af As Long, ByVal s_type As Long, ByVal protocol As Long) As Long '创建一个通讯端点并返回一个套接口
Private Declare Function WSAStartup Lib "ws2_32.DLL" (ByVal wVR As Long, lpWSAD As WSADataType) As Long
Private Declare Function WSACleanup Lib "ws2_32.DLL" () As Long
Private Declare Function closesocket Lib "ws2_32.DLL" (ByVal s As Long) As Long
Private Declare Function setsockopt Lib "ws2_32.DLL" (ByVal s As Long, ByVal level As Long, ByVal optname As Long, optval As Long, ByVal optlen As Long) As Long
Private Declare Function sendto Lib "ws2_32.DLL" (ByVal s As Long, Buf As Any, ByVal buflen As Long, ByVal flags As Long, to_addr As Any, ByVal tolen As Long) As Long
Private Function WakeRemoteComputer(MacAddress() As Byte) As Boolean
Dim msg_sock As Long
Dim remote_addr As sockaddr
Dim dwYes As Long
Dim SendData(0 To BUF_LEN - 1) As Byte, i As Integer
Dim wVersionRequested As Long ' 版本
Dim WSAData As WSADataType
WakeRemoteComputer = False
wVersionRequested = &H202
If WSAStartup(wVersionRequested, WSAData) = 0 Then
' 发送UDP数据到远程计算机
If sendto(msg_sock, SendData(0), BUF_LEN, 0, remote_addr, Len(remote_addr)) <> SOCKET_ERROR Then
WakeRemoteComputer = True
End If
End If
closesocket msg_sock
End If
End If
WSACleanup
End Function
Sub main()
Dim MacAddress(0 To 5) As Byte, i As Integer
'MacAddress 中放置NAS的MAC的6位地址
MacAddress(0) = Val("&H" & "F4")
MacAddress(1) = Val("&H" & "6D")
MacAddress(2) = Val("&H" & "04")
MacAddress(3) = Val("&H" & "D9")
MacAddress(4) = Val("&H" & "F9")
MacAddress(5) = Val("&H" & "FE")
If WakeRemoteComputer(MacAddress()) Then
' MsgBox "唤醒包发送完成。 "
Else
MsgBox "不能发送唤醒包。 "
End If
End Sub 作者: aliguagua 时间: 2011-6-16 21:20
真正想替代本地硬盘还是需要万兆或者intel的雷霆才行
而且nas最好能跟普通硬盘一样只用几瓦的电就好啦作者: aliguagua 时间: 2011-6-16 21:22 本帖最后由 aliguagua 于 2011-6-16 21:22 编辑