【发布时间】:2014-01-24 02:48:27
【问题描述】:
给定一个已建立的 TCP 会话的本地 IP 和端口,我能否找出哪一方发送了初始 SYN?也就是说,这个连接是主动打开还是被动打开?我需要在 Linux 上的 C/C++ 中工作的东西。一个 hacky 方法可能是 socket()/listen() 并抓住 EADDRINUSE 但我希望有更清洁的东西。一旦会话建立,我什至不确定内核是否会跟踪它。
编辑:我也不想调用 netstat(甚至 ss),因为打开了许多套接字,两者都太慢了。这段代码会经常被调用。
【问题讨论】:
-
有趣的问题(+1)
-
这里的目的是什么?
-
@EJP: 识别给定流是来自这台机器还是来自远程机器。
-
(tomshardware.com/forum/… 上的类似讨论 - 在建立连接期间没有嗅探/记录就没有解决方案)
标签: c++ c linux sockets network-programming