我正在尝试通过erlangs :socket
模块使用低级套接字接收所有TCP数据包:
def start() do
{:ok, socket} = :socket.open(:inet, :raw, :tcp)
recv(socket)
end
defp recv(socket) do
:socket.recv(socket) |> IO.inspect()
recv(socket)
end
字符串
但是没有收到任何数据包。使用:socket.open(:inet, :raw, :ip)
可以工作并接收数据包。通过:socket.bind/2
绑定(例如:socket.bind(socket, :any)
或其他变体)也没有帮助。我也以root身份运行函数。捕获TCP数据包需要任何特定的配置吗?我如何捕获所有TCP数据包?
我知道第三方软件包,例如procket,但我想使用:sockets
模块。
(使用MacOS,但在Linux上也不起作用)。
1条答案
按热度按时间dgtucam11#
它适用于我的Linux机器。
字符串