netsh 与 winsock 一个是window的脚本工具,另一个则是window是网络编程中要用到的网络接口,而非要说跟我小小的前端有什么影响,那还真有...,当然这个影响是很不好的,比如nodeJS报“socket 系统调用失败”的错误,再比如sublime安装install package controll 失败,安装emmet是无法连接到PyV8,再比如一些联网的应用软件无法连接网络等等。


首先关于 sublime 更多的问题故障处理,我推荐这篇文章:http://blog.csdn.net/freshlover/article/details/44261229/。
如果你也遇到了类似的问题,但是通过以上链接提供的教程无法解决所遇到的奇葩问题,在这里我强烈建议你看看我总结的这篇教程,当然在我的这篇文章中理论知识占了 99%,实际有用的就只有 1%,嘎嘎,在看我来,能够知道背后的大致原理还是更重要的,而且还挺有意思!
最后,如果你真的没有耐心看下去的话,想直接尝试是否能解决你的问题,请直接在 “命令行工具”(管理员模式) 下输入以下命令,进行验证是否能够解决:

netsh winsock reset

然后重新启动计算机即可。


什么是 netsh ?

netsh 是微软提供的一个功能强大的网络配置脚本(network shell)工具。其本质是一个命令行脚本工具,它允许用户从本地或远程显示或修改当前正在运行的计算机的网络配置,并且还可以将当前计算机网络配置进行备份与恢复,更实用的是我们可以将用一个文件将netsh的相关命令保存下来,并命名为.cmd格式的文件,这样即可直接执行。

netsh 的作用?

很多时候,我们可能需要在不同的网络中工作,一遍又一遍地重复修改IP地址是一件比较麻烦的事。另外,系统崩溃了,重新配置网卡等相关参数也比较烦人(尤其是无线网卡)。事实上,巧妙地利用Windows 2000/XP/2003系统内置的netsh命令,不但可以快速切换IP地址,还可以在静态和动态IP地址设置中随时切换,也可实现随时备份和恢复网络设置等等。

关于 netsh 的实例

实例一:随时随地切换IP地址

打开“记事本”,新建一个文件,然后在其中输入如下代码:

netsh interface ip set address “本地连接” static 192.168.0.10 255.255.255.0 192.168.0.1 1

然后将文件命名为home.cmd,将它保存在桌面上。
同样,建立一个office.cmd的文件,在其中输入:

netsh interface ip set address “本地连接” static 192.168.1.11 255.255.248.0 192.168.0.1 1

以后在家只要双击home.cmd即可快速将IP地址切换为192.168.0.10,子网掩码:255.255.255.0,网关:192.168.0.1,而到公司后双击office.cmd即可将IP切换至192.168.1.11,子网掩码:255.255.248.0,网关:192.168.1.1。

注意:

1. 上述命令中的“本地连接”为网卡连接的名称,可以在“控制面板”中双击“网络连接”图标查看到相应网卡的名称。如果你有多块网卡,只要修改上面的“本地连接”的名字及IP、子网掩码和网关即可。2. 以上命令最后1为设置的跃点数,该值较为专业,用户可以设置为1,不必理会。

实例二:固定/动态IP随时换

先在桌面上建立一个static.cmd文件,然后在其中输入相应代码:

netsh interface ip set address “本地连接” static 192.168.0.12 255.255.255.0 192.168.0.1 1

同时建立一个dhcp.cmd文件,在其中输入如下代码:

netsh interface ip set address “本地连接” dhcpipconfig /releaseipconfig /renew

以后双击桌面上的static.cmd,会将“本地连接”的IP地址修改为192.168.0.12,子网掩码:255.255.255.0,网关:192.168.0.1。而双击dhcp.cmd文件,会让“本地连接”马上设置为动态IP方式,且会立即从DHCP服务器获得最新IP地址。

实例三:备份/恢复网络设置

netsh dump >d:/netbck.txt

可以将当前的网络状态备份在一个文件中。

netsh exec d:/netbck.txt

可以利用备份快速恢复网络设置

什么是winsock ?

winsock 就是 Windows Sockets。它是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。
winsock 作用在应用层上,可以理解成window系统中只要需要联网的设备或应用软件都需要通过调用该接口来实现,因此一旦winsock发生了问题,必然会导致使用某些协议的应用软件无法正常联网,最典型的例子就是QQ可以登录但是浏览器不能打开网页,或者是浏览器可以打开网页以及百度首页但是 cmd的ping命令无法ping通。

如何解决 winsock 异常带来的网络连接问题?

很简单,在cmd(管理员)下执行以下命令即可:

netsh winsock reset

然后重新启动计算机即可。
那么这条命令背后原因是什么呢?

netsh winsock reset 是把它恢复到默认状态。作用是重置 Winsock 目录。如果一台机器上的Winsock协议配置有问题的话将会导致网络连接等问题,
可通过使用netsh winsock reset命令来重置Winsock目录尝试恢复。这个命令可以重新初始化网络环境,以解决由于软件冲突、病毒原因造成的参数错误问题。
例如电脑突然出现成功连接网络但不能上网、网络受限,打开网页出现显示问题,无法自动获取IP地址或指定IP地址仍无数据包传输,
使用蓝牙适配器传输文件时提示“使用了与请求的协议不兼容的地址”等等网络协议应用相关故障。

如果把 winsock 比作一棵小树的话,那么 netsh 就可以理解成一把园艺剪刀用于修剪这个树。

可以间接修复的问题有哪些?

使用 netsh winsock reset (可能)可以修复的问题有:

  • nodeJS报 sockt 系统调用失败的问题

  • sublime 无法安装 install package control

  • sublime 启动 install package 报错。

  • sublime 安装插件 emmet 无法连接验证 PyV8等。

  • 在有网络的情况下 ping 命令无法ping通。

  • 有些桌面程序可以使用网络服务,但是浏览器无法打开网页