gpt4 book ai didi

通过 LD_PRELOAD 将 AF_INET 套接字转换为使用 AF_UNIX

转载 作者:太空宇宙 更新时间:2023-11-04 03:55:16 28 4
gpt4 key购买 nike

我想知道将 AF_INET 套接字转换为使用 AF_UNIX 的可行性如何。这样做的原因是我有一个程序可以打开 TCP 套接字,但我们无法更改。因此,为了减少开销,我们希望将此套接字绑定(bind)为使用 AF_UNIX 套接字进行通信。

到目前为止,我的想法是使用 LD_PRELOAD 来实现这一点——拦截 bind() 和 accept(),但是目前还不清楚如何最好地实现这一点,或者即使这是最好的方法。

到目前为止,在bind()中进行绑定(bind),如果套接字类型是AF_INET并且它的IP/端口是我希望转换为AF_UNIX的套接字,那么我就关闭这里的sockd,并打开一个AF_UNIX。但是,这似乎在 accept() 中引起了进一步的问题——因为我不确定当 accept() 中的 sockfd 与我希望使用 AF_UNIX 套接字的 sockfd 匹配时该怎么做。

感谢任何帮助。

杰森

最佳答案

您的想法听起来完全可行。事实上,我认为这听起来是实现您想要的目标的最佳方式。不过,我不希望开销/性能有很大不同,甚至是可测量的不同。

当然你还必须拦截socket()除了bind()accept() .在 bind() ,例如,您可以将请求的 TCP 端口转换为固定路径名 /tmp/converted_socket.<port-number>或类似的东西。

关于通过 LD_PRELOAD 将 AF_INET 套接字转换为使用 AF_UNIX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16983918/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com