V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
JankinZhang
V2EX  ›  问与答

smb 局域网内 win10 和 ios 设备传文件的问题

  •  1
     
  •   JankinZhang · 2021-01-25 08:11:07 +08:00 · 2158 次点击
    这是一个创建于 1388 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我是使用 Android 设备开热点来组建局域网 Windows 端配置完成后 查看 ipv4 地址 在 ios 的文件中连接服务器
    smb://ipv4 地址 这样操作很成功 没有问题 但随后了解到如果用路由器 则可以使用 smb://电脑名称 来解决动态 ip 的问题
    想问问:可以这样操作吗?路由器的 DNS 设置有什么需要主义的地方吗?我用 Android 热点组的局域网可否这样操作?
    感谢大佬
    15 条回复    2021-01-26 03:50:10 +08:00
    idealhs
        1
    idealhs  
       2021-01-25 08:41:16 +08:00
    啊这,你试一下不就完了么
    0TSH60F7J2rVkg8t
        2
    0TSH60F7J2rVkg8t  
       2021-01-25 08:50:46 +08:00 via iPhone
    smb://电脑主机名 访问,使用的是 arp 协议,通过 arp 广播,查找 mac 和 ip 对应的主机,随后进行通信。此协议是以太网协议,没有 dns 参与,路由器无需设置 dns
    dier
        3
    dier  
       2021-01-25 09:21:58 +08:00
    直接在路由器上 DHCP 设置里为 Android 设备(或者任意想要固定 IP 的设备)的 MAC 地址静态绑定一个 IP 就不会变了,主机名有时可能也会修改导致旧的连不上。另外 #2 说得没错 ARP 只在二层交换,不需要 DNS
    sujin190
        4
    sujin190  
       2021-01-25 10:04:32 +08:00
    @ahhui #2 你这前面主机名,后面 ip,驴唇不对马嘴了吧

    其实 windows 这个局域网主机名可以访问似乎试 NetBIOS 的 NBNS 服务提供的吧,其实也就是网络发现,Android 的话自己就没原生支持 smb,具体怎么查找本地网络就看安装的 smb 软件怎么实现了,ios 没用过不清楚,不过估计输入主机名估计在手机上就是走 dns 解析的,一般路由也不支持设置自定义解析吧,openwrt 的话可以在 dnsmasq 添加一条解析记录就好了
    yutou527
        5
    yutou527  
       2021-01-25 11:51:18 +08:00
    他说的应该是“查找主机对应的 MAC 和 IP”
    JankinZhang
        6
    JankinZhang  
    OP
       2021-01-25 11:58:51 +08:00
    路由器丢学校了 热点试了试貌似不行
    JankinZhang
        7
    JankinZhang  
    OP
       2021-01-25 11:59:39 +08:00
    @idealhs 路由器丢学校了 热点试了试貌似不行
    0TSH60F7J2rVkg8t
        8
    0TSH60F7J2rVkg8t  
       2021-01-25 12:23:18 +08:00
    @yutou527 #5 我在 2 楼的回复确实错了,arp 是 ip 和 mac 地址之间互相转换查找的协议,如 @sujin190 #4 所说,楼主的问题是 NetBIOS 协议负责完成的。查了下,NetBIOS 好像是 Windows 在用,不确定 Android 有没有使用,所以楼主 @JankinZhang #6 提到的,测试没有成功。

    抱歉,我之前的回复是错的。有关 NetBIOS 的说明,可查看:
    https://support.microsoft.com/en-us/topic/microsoft-tcp-ip-host-name-resolution-order-dae00cc9-7e9c-c0cc-8360-477b99cb978a
    https://en.wikipedia.org/wiki/NetBIOS
    AoTmmy
        9
    AoTmmy  
       2021-01-25 12:26:14 +08:00 via Android
    不知道为什么我的 iPad 连接 smb://ip 一直失败,只能用 smb://主机名
    JankinZhang
        10
    JankinZhang  
    OP
       2021-01-25 13:33:12 +08:00
    @ahhui 连路由器试了试 win10ipv4 是 192.168.1.143 ipad 是 192.168.1.144
    使用 ipad 自带的 文件-连接服务器-smb://192.168.1.134 可以正常访问 win10 的共享文件夹
    smb://+电脑名称 也不行
    JankinZhang
        11
    JankinZhang  
    OP
       2021-01-25 13:44:07 +08:00
    倒是 Android 使用 ES 文件浏览器-网络-局域网-扫描 可以直接看到 win10 电脑名称
    lin559671
        12
    lin559671  
       2021-01-25 14:44:48 +08:00 via Android
    Windows server 有个叫 wins 的服务,了解下就知道了
    0TSH60F7J2rVkg8t
        13
    0TSH60F7J2rVkg8t  
       2021-01-25 14:59:05 +08:00
    @JankinZhang 因为这里有 2 个问题,1 个是查找主机名对应的 ip 地址,另外一个是 smb 连接这个 ip 地址。貌似 android 没有实现 NetBIOS 的 Client 协议,所以在查找主机名的时候,直接问 DNS 了,于是就查不到了。ES 文件浏览器的扫描使用的是网络设备发现协议,那是另外一个问题了。

    我想到个比较简单的方法实现你的功能,在计算机上使用一个计划任务,检测局域网 ip 地址,如果是某个范围内,更新路由器的 hosts 文件(或者 dns 记录),可能需要配合路由器的 ssh 或者 telnet 协议登录,而且前提是路由器使用的是 OpenWrt 等开源固件。
    jim9606
        14
    jim9606  
       2021-01-25 16:09:40 +08:00 via Android
    这个功能需要路由器支持,例如 openwrt 会自动将 dhcp 租约列表的主机名加入到內建的 dnsmasq 解析列表,这种情况你确保手机使用路由器作为 dns 服务器即可。

    另一种方法是使用 mdns,用"主机名.local"访问,不过 android 默认不支持这个。
    docx
        15
    docx  
       2021-01-26 03:50:10 +08:00 via iPhone
    就是 hostname 吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5965 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 02:05 · PVG 10:05 · LAX 18:05 · JFK 21:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.