Windows NetBIOS: “Called name not present”

通过非“计算机名”访问Windows的共享时,NetBIOS会返回”Called name not present”,在一些客户端上会遇到问题。

不是什么场合都能使用计算机名访问共享,不明白Micosoft这样设计是什么心态。

 

不过,还好找到了添加NetBIOS别名的方法:

打开regedit,到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]下,添加一项名为OptionalNames的字符串值,编辑其值:

如图所示,一行一个别名。

一般来说,是通过IP访问共享的,把IP写进去就好了,有些客户端收到“Called name not present”后,还会尝试把IP的第一段、*SMBSERVER作为called name(详情可抓包分析),为了避免客户端报错,都写进去就好了。

 

保存后,重启系统(没找到不用重启的方法)。

JetBrains IDEs禁止Double-press Shift调用Search Everywhere

JetBrains把dobule-press shift定为search everywhere的热键,对于我这种频繁敲shift切换中英文的人来说,就是种折磨。

我经常以迅雷不及掩耳之势敲几下shift按键,在计算机还没来得及反应过来之前,我就已经进入shift后的状态继续敲键盘了,然而敲了几个键后,才发现都敲到search everywhere里面了……

Google一番,在“栈溢出”上找到了答案:https://stackoverflow.com/a/48894157/8831831

 

It works!

涉及NAT的长连接问题

A为服务器;B是一个在内网的计算机,经路由器C NAT可访问Internet,路由器C拥有一个Internet IP。

最近在给A与B弄UDP长连接:B主动向A构建UDP长连接,长连接构建成功后,刚开始,A与B分别都可以通过长连接主动向对方发送数据。

长连接闲置一段时间后,该长连接开始无法使用,需要B主动重新构建长连接后方可恢复。

 

具体原因可见IP Network Address Translator (NAT) Terminology and Considerations (RFC 2663) – 2.6. End of session for TCP, UDP and others

简单来说,NAT设备上的NAT记录是有超时时间的,长连接闲置了一段时间,达到超时时间后,NAT设备会认为该连接已结束,清理掉对应的NAT记录,因此A与B就无法再次通过长连接互相发送数据。

 

解决办法:Heartbeat!