【发布时间】:2013-06-03 17:59:50
【问题描述】:
我想知道将 AF_INET 套接字转换为使用 AF_UNIX 是多么可行。这样做的原因是我有一个程序可以打开一个 TCP 套接字,但我们无法更改它。因此,为了减少开销,我们希望将此套接字绑定为使用 AF_UNIX 进行通信。
到目前为止,我的想法是使用 LD_PRELOAD 来实现这一点——拦截 bind() 和 accept(),但目前尚不清楚如何最好地实现这一点,或者即使这是最好的方法。
到目前为止,在 bind() 中绑定,如果套接字类型是 AF_INET 并且它的 IP/端口是我希望转换为 AF_UNIX 的套接字,那么我在此处关闭 sockd,并打开一个 AF_UNIX。但是,这似乎在 accept() 中进一步引起了问题——因为我不确定当 accept() 中的 sockfd 与我希望告诉使用 AF_UNIX 套接字的那个匹配时该怎么做。
感谢您的帮助。
杰森
【问题讨论】:
-
尽管我写了一个答案,但我发现这个问题不适合网站的格式。我几乎投票以“不具建设性”来关闭它。问题是“这可行吗?”的答案。或多或少只是“是”。将来,我建议问一个更直接的问题,例如关于实现此包装器的特定方面的问题,但您遇到了麻烦。
-
谢谢,塞拉达。我现在修改了这个问题,使其更加清晰。
-
socket_wrapper 库提供了这个功能。
标签: c sockets ld-preload