- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想编写一个类似 netstat 的应用程序 - 分别显示所有事件连接和打开的端口。问题是我不知道该怎么做——我已经完成了一些网络编程,但总的来说它是一些简单的服务器-客户端数据包和简单的 TCP 和 UDP 数据包发送/接收。
我查看了 netstat 代码,但它看起来非常复杂。我也在阅读 Unix 网络编程书并等待我的 TCP/IP Illustrated(第 1 卷和第 2 卷)拷贝。
有什么建议吗?任何人都有这样的经验吗?如果可以,有人可以在这里帮助我吗?重要的事情要做等等等等?我会感谢每一个有用的答案。
提前谢谢你。
最佳答案
您可以这样做,但要意识到实现将特定于操作系统。这是因为每个操作系统公开其计数器和统计数据的方式不同。
例如,在Linux上,您可以通过解析/proc/net
中的文件来获取大部分统计信息。转储 /proc/net/dev
的内容将为您提供接口(interface)列表(以及一些统计信息)。
# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo:1417676206 2810305 0 0 0 0 0 0 1417676206 2810305 0 0 0 0 0 0
eth0:3780840146 96049486 0 0 0 0 0 0 2202685287 17436558 0 0 0 0 0 0
或者,解析 /proc/net/netstat
将为您提供协议(protocol) (TCP/IP) 统计信息:
# cat /proc/net/netstat
TcpExt: SyncookiesSent SyncookiesRecv SyncookiesFailed EmbryonicRsts PruneCalled RcvPruned OfoPruned OutOfWindowIcmps LockDroppedIcmps ArpFilter TW TWRecycled TWKilled PAWSPassive PAWSActive PAWSEstab DelayedACKs DelayedACKLocked DelayedACKLost ListenOverflows ListenDrops TCPPrequeued TCPDirectCopyFromBacklog TCPDirectCopyFromPrequeue TCPPrequeueDropped TCPHPHits TCPHPHitsToUser TCPPureAcks TCPHPAcks TCPRenoRecovery TCPSackRecovery TCPSACKReneging TCPFACKReorder TCPSACKReorder TCPRenoReorder TCPTSReorder TCPFullUndo TCPPartialUndo TCPDSACKUndo TCPLossUndo TCPLoss TCPLostRetransmit TCPRenoFailures TCPSackFailures TCPLossFailures TCPFastRetrans TCPForwardRetrans TCPSlowStartRetrans TCPTimeouts TCPRenoRecoveryFail TCPSackRecoveryFail TCPSchedulerFailed TCPRcvCollapsed TCPDSACKOldSent TCPDSACKOfoSent TCPDSACKRecv TCPDSACKOfoRecv TCPAbortOnSyn TCPAbortOnData TCPAbortOnClose TCPAbortOnMemory TCPAbortOnTimeout TCPAbortOnLinger TCPAbortFailed TCPMemoryPressures TCPSACKDiscard TCPDSACKIgnoredOld TCPDSACKIgnoredNoUndo TCPSpuriousRTOs TCPMD5NotFound TCPMD5Unexpected
TcpExt: 0 0 7053 2480 0 0 0 0 0 0 136514 0 0 0 0 4732 1291978 48 10938 0 0 726917 0 14734 0 3505285 23 3285967 4288783 963 56625 82 294 218 85 153 80 817 739 4861 176075 7864 246 3859 1647 285964 13690 54668 25710 599 4775 0 0 10792 21 12994 1492 0 305 27 0 946 0 0 0 1178 5175 3188 353 0 0
IpExt: InNoRoutes InTruncatedPkts InMcastPkts OutMcastPkts InBcastPkts OutBcastPkts
IpExt: 0 0 372 14 269538 0
或者/proc/net/udp
给你UDP连接信息:
# cat /proc/net/udp
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode ref pointer drops
20: 0100007F:1194 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 6788392 2 f6701b80 0
20: 4CE85CD0:1194 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 6788384 2 f6703200 0
20: 4DE85CD0:1194 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 6788379 2 f6701e00 0
39: 00000000:0AA7 00000000:0000 07 00000000:00000000 00:00000000 00000000 108 0 6790562 2 d2890f00 0
40: 00000000:11A8 00000000:0000 07 00000000:00000000 00:00000000 00000000 108 0 6790539 2 d2892580 0
68: 00000000:13C4 00000000:0000 07 00000000:00000000 00:00000000 00000000 108 0 6790505 2 d2892d00 0
87: 00000000:87D7 00000000:0000 07 00000000:00000000 00:00000000 00000000 106 0 6957 2 f67b0f00 0
89: 00000000:11D9 00000000:0000 07 00000000:00000000 00:00000000 00000000 108 0 6790508 2 d2890500 0
105: 00000000:14E9 00000000:0000 07 00000000:00000000 00:00000000 00000000 106 0 6956 2 f67b2580 0
116: 0100007F:01F4 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 6788388 2 f6701900 0
116: 4CE85CD0:01F4 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 6788382 2 f6701180 0
116: 4DE85CD0:01F4 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 6788378 2 f6702f80 0
120: 0100007F:88F8 0100007F:88F8 01 00000000:00000000 00:00000000 00000000 107 0 6790576 2 f67b0a00 0
希望这对您有所帮助。
关于c++ - 像netstat一样写程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2257637/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我已经检查了“-n”的功能 --“显示事件的 TCP 连接,但是,地址和端口号以数字表示,不会尝试确定名称。”但是我不明白为什么“-n”可以让netstat立即退出? 最佳答案 通过快速检查,我没有看
我正在使用netstat检查 TCP 连接。当我尝试 netstat -t | grep 210 ,它没有向我显示任何连接(输出为空),但是当我尝试 netstat -nt | grep 210 时,
在 Windows 上有谁知道为什么“netstat -an -p tcp”不显示 IPv6 地址,但为什么“netstat -an”显示它们? 我非常怀疑它会将 IPv6 地址解析为 IPv4,但这
我试图了解 netstat 的 --numeric/-n 标志的作用?手册说了以下关于 --numeric/-n --numeric , -n Show numerical addresses ins
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
在设置新的 http 服务器时,我发现 netstat 中出现了一些奇怪的连接: 这台计算机上几乎没有运行任何东西 - 这些高端口似乎是木马程序。 谁能帮我提供信息? 最佳答案 尝试 netstat
我有一台机器,每秒(或更少)有大量连接和断开连接。我需要在某一时刻捕获网络快照。但是我看到 netstat 需要一些时间来返回结果,然后很多套接字会重新连接。 netstat 实际上是如何工作的?它能
当使用 netstat -i 时,您会得到类似于以下示例的输出: Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-D
大量搜索未找到批量解析 netstat -bano 的解决方案(与 -nab、-bna、- 相同的开关anb、-nba、nabo 等),因此来自给定网络连接的所有信息都在同一行上。 Netstat 的
我知道有一种方法可以在 ubuntu 上运行 netstat 命令,以便它不断更新。有人知道吗?我想知道进程何时打开或关闭套接字: sudo netstat -lnp |grep 12239 最佳答案
我正在尝试运行 shell命令在我的 Android 应用程序中以检查是否给予 tcp port是否打开: Runtime.getRuntime().exec(arrayOf("/system/bin
这个问题最近在我尝试启动 active-mq 时开始(默认情况下从端口 61616 开始)。但突然它停止在该端口上提出 JVM_BIND 问题。即使重新启动计算机后问题也没有消失。 主要问题是 Win
您好,当我运行 netstat -g 时,我看到了下表。但是,我就是不知道all-system.mcast.net映射到什么IP?这是在哪里定义的? linux中是否有一个文件来设置它?提前致谢 IP
当我运行netstat -ano命令时,我有: PS Y:\PowerShell> netstat -ano Active Connections Proto Local Address
所以我正在开发一个 Linux 内核模块,并且想要从 sudo netstat -nap 的输出中隐藏特定端口号上的打开套接字 我应该采取什么方法? 最佳答案 首先,您必须了解“netstat”如何从
我有一个 OSGI 容器,打开了几个 TCP/UDP 端口,有没有办法使用 OSGI 工具将开放端口映射到 bundle ? 此外,如果某个包将自身注册为 HTTP servlet,我可以通过某种方式
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
在 netstat 中检索套接字状态的系统调用是什么?我实际上对 netstat 的实现方式并不感兴趣,而是对哪些系统调用可以检索该信息感兴趣。 getsockopt() 似乎获取的是套接字的静态信息
命令 netstat 的输出如下: netstat -taunp | grep hgd tcp 0 0 10.1.1.1:601 10.1.1.2:935
我是一名优秀的程序员,十分优秀!