作为一个初步接触电脑的人,在学习Android的过程中,遇到各种问题,今天遇到了。这样一个错误提示:
The connection to adb is down, and a severe error has occured.
You must restart adb and Eclipse.
Please ensure that adb is correctly located at 'D:\Program Files\eclipse_AndroidDeveloper\adt-bundle-windows-x86-20130522\sdk\platform-tools\adb.exe' and can be executed.
上网查找后有两种解决方案,一是重新在Path中添加路径,二是adb.exe端口的被其他程序所占用。最后第二种方法解决了问题,是一个tadb.exe的进程占用了Android开发中adb.exe的端口。tadb.exe是Tencent安卓设备连接电脑时的驱动程序。结束该进程后,上面的错误完美解决,具体解决方案来自:
http://blog.csdn.net/lg279908129/article/details/7759789
里面使用了命令行参数。于是自己便顺便学一下DOS的相关命令,查阅资料整理如下:
第一部分(参考自百度百科以及微软MSDN):
-------------------------------------------------------------------------------
netstat大概是Net State(网络状态)的缩写。
在DOS环境下,输入:netstat /? 将显示所有可用命令(不用记啊,嘿嘿……当然记住了更好),netstat常用有如下命令:
netstat[-a] [-e] [-n] [-o] [-pProtocol] [-r] [-s] [Interval]
- -a
- 显示所有活动的 TCP 连接以及计算机侦听的 TCP 和 UDP 端口。
- -e
- 显示以太网统计信息,如发送和接收的字节数、数据包数。该参数可以与 -s 结合使用。
- -n
- 显示活动的 TCP 连接,不过,只以数字形式表现地址和端口号,却不尝试确定名称。
- -o
- 显示活动的 TCP 连接并包括每个连接的进程 ID (PID)。可以在 Windows 任务管理器中的“进程”选项卡上找到基于 PID 的应用程序。该参数可以与 -a、-n 和 -p 结合使用。
- -p Protocol
- 显示 Protocol 所指定的协议的连接。在这种情况下,Protocol 可以是 tcp、udp、tcpv6 或 udpv6。如果该参数与 -s 一起使用按协议显示统计信息,则 Protocol 可以是tcp、udp、icmp、ip、tcpv6、udpv6、icmpv6 或 ipv6。
- -s
- 按协议显示统计信息。默认情况下,显示 TCP、UDP、ICMP 和 IP 协议的统计信息。如果安装了 IPv6 协议,就会显示 IPv6 上的 TCP、IPv6 上的 UDP、ICMPv6 和 IPv6 协议的统计信息。可以使用 -p 参数指定协议集。
- -r
- 显示 IP 路由表的内容。该参数与 route print 命令等价。
- Interval
- 每隔 Interval 秒重新显示一次选定的信息。按 Ctrl+C 停止重新显示统计信息。如果省略该参数,netstat 将只打印一次选定的信息。
- /?
- 在命令提示符下显示帮助。
备注
- 与该命令一起使用的参数必须以连字符 (-) 而不是以斜杠 (/) 作为前缀。
-
Netstat 提供下列统计信息:
- Proto
协议的名称(TCP 或 UDP)。 - Local Address
本地计算机的 IP 地址和正在使用的端口号。如果不指定 -n 参数,就显示与 IP 地址和端口的名称对应的本地计算机名称。如果端口尚未建立,端口以星号 (*) 显示。 - Foreign Address
连接该插槽的远程计算机的 IP 地址和端口号码。如果不指定 -n 参数,就显示与 IP 地址和端口对应的名称。如果端口尚未建立,端口以星号 (*) 显示。 - (state)
表明 TCP 连接的状态。可能的状态如下: -
LISTEN
侦听来自远方的TCP端口的连接请求
SYN-SENT
在发送连接请求后等待匹配的连接请求
SYN-RECEIVED
在收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED
代表一个打开的连接
FIN-WAIT-1
等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2
从远程TCP等待连接中断请求
CLOSE-WAIT
等待从本地用户发来的连接中断请求
CLOSING
等待远程TCP对连接中断的确认
LAST-ACK(Acknowledge Character)
等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT
等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED
没有任何连接状态
- Proto
- 只有当 Internet 协议 (TCP/IP) 协议在“网络连接”中安装为网络适配器属性的组件时,该命令才可用。
范例
要同时显示以太网统计信息和所有协议的统计信息,请键入下列命令:
netstat -e -s
要仅显示 TCP 和 UDP 协议的统计信息,请键入下列命令:
netstat -s -p tcp udp
要每 5 秒钟显示一次活动的 TCP 连接和进程 ID,请键入下列命令:
netstat -o 5
要以数字形式显示活动的 TCP 连接和进程 ID,请键入下列命令:
netstat -n –o
各个端口占用
netstat -a –n
各个端口占用和进程PID
netstat –ano
对其中进程进行筛选(比如筛选出端口为5037的进程):
netstat -aon | findstr "5037" 注意findstr与"5037" 之间有一个空格。
注:各个命令使用如netstat –a –n –o 与netstat -ano是等价的
第二部分(参考自:http://www.computerhope.com/taskkill.htm):
-------------------------------------------------------------------------------
TastList命令:
在DOS窗口中输入tasklist,如下:
将会出现进程名称,PID等属性值。我们可以通过这个命令来查看各个进程对应的PID。
注:对PID对应的进程名进行查看(如PID为4632的进程对应的进程):
tasklist | findstr "4632"
TaskKill命令:notepad.exe
taskkill /f /im notepad.exe
附:比如要解决本文开头出现的问题,就可以:
1:netstat|findstr "5037"
2:然后找到被占用监听端口的进程端口(比如为8008)
3:查看该端口的进程名
tasklist|findstr “8008”
显示为tadb.exe
4:结束这个进程
taskkill /f /im tadb.exe
5:如果成功将会输出:
成功: 已终止进程 "tadb.exe",其 PID 为xxxx。