我的程序正在打开TCP套接字,我正在试图跟踪原因(我使用了许多不同的套接字)。lsof命令显示:
myprog 258981 root 56u sock 0,8 0t0 2429743 protocol: TCP
myprog 258981 root 57u sock 0,8 0t0 2430142 protocol: TCP
myprog 258981 root 58u sock 0,8 0t0 2430553 protocol: TCP
myprog 258981 root 59u sock 0,8 0t0 2430975 protocol: TCP
myprog 258981 root 60u sock 0,8 0t0 2431371 protocol: TCP
myprog 258981 root 61u sock 0,8 0t0 2431775 protocol: TCP因此,我认为这意味着最后一个TCP套接字是在节点2431775打开的。所以我想找更多关于这个套接字的信息。
如何找到套接字(目标地址和端口)的更多细节?
发布于 2021-11-24 23:09:53
TCP套接字没有inode号(可能在Plan9下有)。它不是“映射”到任何地方的文件系统。您可能会将此与UNIX域套接字混淆。
你希望在信息中找到什么还不清楚。所发生的情况是,您的程序创建了一个套接字,并且没有正确地处理它,而且,即使它正确地处理了它,TCP状态机也可能会继续存在,例如等待未使用的ACK(取决于您所做的操作以及您的计算机的配置方式)。所以,在您的代码中,看看在哪里创建了套接字。如果您对何时发生这种情况感到困惑,strace可能会有所帮助。
https://unix.stackexchange.com/questions/678965
复制相似问题