POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 14846|回复: 32
打印 上一主题 下一主题

网络唤醒在NAS中的应用

[复制链接]
跳转到指定楼层
1#
发表于 2011-6-16 21:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
NAS的最终应用是代替本地硬盘,前提条件是有千兆有线网络,这个条件对于这个版块的常客来说并不苛刻。

在千兆有线网络应用中,DIY的台式机NAS性能相对较强,唯一常被诟病的是功耗问题。

对于纯NAS(不用做下载)的应用,NAS 24小时开机能随时使用NAS资源,用的比较爽。

NAS 24小时开机对于我而言,太费电,同时硬盘通电时间太长会影响今后的出售,我的解决方案是睡眠+网络唤醒。

这样能做到和NAS 24小时开机相同的效果,而且NAS从睡眠中唤醒最多5-10秒就可以了。

1、编写个网络唤醒软件
2、将这个软件在win7的计划任务中设置为登陆启动。
3、NAS中设置20分钟睡眠。
这样家里任何一台电脑启动都会启动NAS,应用中会让NAS变成本地硬盘一样使用方便。

程序自己参考了网上资源自己做了一个(VB)
下面是源程序:

'下面是源程序
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
   
        '获得winsock句柄
        msg_sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
   
        If msg_sock <> INVALID_SOCKET Then
        
            ' 允许进行广播
            dwYes = 1
            If setsockopt(msg_sock, SOL_SOCKET, SO_BROADCAST, dwYes, Len(dwYes)) <> SOCKET_ERROR Then
        
                ' 准备发送数据
                For i = 0 To BUF_LEN - 1
                    SendData(i) = IIf(i < 6, &HFF, MacAddress(i Mod 6))
                Next i
               
                ' 准备发送地址
                remote_addr.sin_family = AF_INET
                remote_addr.sin_port = 0
                remote_addr.sin_addr = &HFFFFFFFF   ' 广播地址255.255.255.255
            
                ' 发送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
2#
发表于 2011-6-16 21:20 | 只看该作者
真正想替代本地硬盘还是需要万兆或者intel的雷霆才行
而且nas最好能跟普通硬盘一样只用几瓦的电就好啦
回复 支持 反对

使用道具 举报

3#
发表于 2011-6-16 21:22 | 只看该作者
本帖最后由 aliguagua 于 2011-6-16 21:22 编辑

如果你用whs作为nas的操作系统,可以在whs端装一个lightout
客户机装lo的客户端,只要客户机一启动,nas就自动启动啦
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2011-6-16 21:28 | 只看该作者
回复 aliguagua 的帖子

1、网络唤醒要从睡眠状态唤醒速度才快,如果是开机唤醒则太慢了。
2、WHS只装过一次,硬盘池不习惯,另外想把一个存有电影的硬盘加入硬盘池当时研究了下好像只能加空盘到硬盘池。
所以现在我NAS还是装WIN7.
回复 支持 反对

使用道具 举报

5#
发表于 2011-6-16 21:36 | 只看该作者
hzdl001 发表于 2011-6-16 21:28
回复 aliguagua 的帖子

1、网络唤醒要从睡眠状态唤醒速度才快,如果是开机唤醒则太慢了。

1.lightout就是从睡眠中唤醒
2.whs加入硬盘可以有一种特殊方法,很方便很简单,最新的whs2011已经没有硬盘池这个说法啦
回复 支持 反对

使用道具 举报

6#
发表于 2011-6-16 21:37 | 只看该作者
hzdl001 发表于 2011-6-16 21:28
回复 aliguagua 的帖子

1、网络唤醒要从睡眠状态唤醒速度才快,如果是开机唤醒则太慢了。

win7估计也能装lightout
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2011-6-16 21:50 | 只看该作者
回复 aliguagua 的帖子

等我再找快大点的硬盘也去装WHS试试。
现在我的系统盘是20G的笔记本硬盘,装不了WHS.

硬盘池的优点是数据安全,请教一个问题,WHS里有数据的硬盘也能加入安全的硬盘池吗?
回复 支持 反对

使用道具 举报

8#
发表于 2011-6-16 21:58 | 只看该作者
hzdl001 发表于 2011-6-16 21:50
回复 aliguagua 的帖子

等我再找快大点的硬盘也去装WHS试试。

不能,会被删掉
回复 支持 反对

使用道具 举报

9#
发表于 2011-6-17 23:43 | 只看该作者
回复 aliguagua 的帖子

lightout是什么软件
回复 支持 反对

使用道具 举报

10#
发表于 2011-6-18 00:30 | 只看该作者
qaz7196 发表于 2011-6-17 23:43
回复 aliguagua 的帖子

lightout是什么软件

d400自带的lightsout
回复 支持 反对

使用道具 举报

11#
发表于 2011-6-18 01:06 | 只看该作者
回复 aliguagua 的帖子

那里有这软件下载
回复 支持 反对

使用道具 举报

12#
发表于 2011-6-19 10:38 | 只看该作者
技术贴,要顶。
回复 支持 反对

使用道具 举报

13#
发表于 2011-8-5 13:21 | 只看该作者
技术好贴,答疑解惑
回复 支持 反对

使用道具 举报

14#
发表于 2011-8-27 08:53 | 只看该作者
能不能实现手机、高清机开机也触发nas的启动?
回复 支持 反对

使用道具 举报

15#
 楼主| 发表于 2011-8-27 18:25 | 只看该作者
IPHONE4 有一个软件Splashtop,里面有网络唤醒功能。
安卓的系统没有用过,不知道。
回复 支持 反对

使用道具 举报

16#
 楼主| 发表于 2011-8-27 18:28 | 只看该作者
bill_max 发表于 2011-8-27 08:53
能不能实现手机、高清机开机也触发nas的启动?

安卓系统查了一下,好像有软件支持网络唤醒
http://www.androidonline.net/soft/show.asp?id=426
回复 支持 反对

使用道具 举报

17#
发表于 2011-8-29 16:09 | 只看该作者
应用才是关键,顶楼主!!
硬件那些只是表面,硬件怎么搞,最终还是要回到应用上来!
回复 支持 反对

使用道具 举报

0808008 该用户已被删除
18#
发表于 2011-8-31 10:51 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

celeron370 该用户已被删除
19#
发表于 2011-9-1 22:27 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

20#
发表于 2011-9-4 16:42 | 只看该作者
技术贴,要学习的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2024-5-5 20:49

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表