| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 356 人关注过本帖
标题:请问,如何用nas的名字登录?而不是IP,谢谢!
只看楼主 加入收藏
mansohu
Rank: 1
等 级:新手上路
帖 子:192
专家分:0
注 册:2013-3-20
结帖率:20.69%
收藏
 问题点数:0 回复次数:1 
请问,如何用nas的名字登录?而不是IP,谢谢!
我有个 nas , 以前我是通过 IP 连接并读取内容,代码如下:
      Shell Environ("comspec") & " /c net use " & IPadssAndDir & "ipc$ ""xxx"" /user:""xxx""", vbHide

但后来,根据需要,会时常改变 nas 的 IP 位置,就不得不经常修改代码,
请问,能否用该 nas 的名字连接?而不是IP,或者有什么其它方法解决这个问题?谢谢!
搜索更多相关主题的帖子: 如何 
2015-01-15 10:45
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
NAS是基于IP协议的,服务依赖于IP地址.如果不想经常改代码.可以考虑把IPadssAndDir 换为由文本框输入的IP地址变量与路径组合.每次运行的时候,输入IP地址.
能不能每次运行时先通过MAC地址,找到IP地址?
MAC地址固定,可采用arp-a>temp.txt,得到MAC与IP地址对应列表,然后在temp.txt中查找对应的IP地址
也可用gethostbyname的办法把机器名转为IP地址,
程序代码:
Option Explicit

Private Type WSADATA
    wversion As Integer
    wHighVersion As Integer
    szDescription(0 To 256) As Byte
    szSystemStatus(0 To 128) As Byte
    iMaxSockets As Integer
    iMaxUdpDg As Integer
    lpszVendorInfo As Long
End Type

Private Type HOSTENT
   hName      As Long
   hAliases   As Long
   hAddrType  As Integer
   hLen       As Integer
   hAddrList  As Long
End Type

Private Const WS_VERSION_REQD = &H101
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)


Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal szHostname As String) As Long
Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVersionRequired As Integer, lpWSAData As WSADATA) As Long

Private Sub Command1_Click()
Dim i As Integer
Dim sIPAddr As String
Dim HOST As HOSTENT
Dim lpHost As Long
Dim dwIPAddr  As Long
Dim tmpIPAddr() As Byte
Dim udtWSAD As WSADATA
Call WSAStartup(WS_VERSION_REQD, udtWSAD)
lpHost = gethostbyname("www.baidu.com")
CopyMemory HOST, lpHost, Len(HOST)
CopyMemory dwIPAddr, HOST.hAddrList, 4
ReDim tmpIPAddr(1 To HOST.hLen)
CopyMemory tmpIPAddr(1), dwIPAddr, HOST.hLen
For i = 1 To HOST.hLen
    sIPAddr = sIPAddr & tmpIPAddr(i) & "."
Next
Form1.Caption = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)
End Sub
你可以用上述代码测试.

[ 本帖最后由 lianyicq 于 2015-1-15 12:55 编辑 ]

大开眼界
2015-01-15 11:19
快速回复:请问,如何用nas的名字登录?而不是IP,谢谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022040 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved