DOS命令之----Netstat+Task以及相关使用

作为一个初步接触电脑的人,在学习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 可以是 tcpudptcpv6udpv6。如果该参数与 -s 一起使用按协议显示统计信息,则 Protocol 可以是tcpudpicmpiptcpv6udpv6icmpv6ipv6
-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

      没有任何连接状态

  • 只有当 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,如下:

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。

posted @ 2013-08-09 11:25  KillerLegend  Views(920)  Comments(0Edit  收藏  举报