什么是POSIX调用来确定重定向套接字打开请求的预期IP?
问题描述:
我正在修改我的主机文件,以将IP地址(例如数据库调用)更改为我正在编写的本地代理。什么是POSIX调用来确定重定向套接字打开请求的预期IP?
10.1.2.3 localhost
10.1.2.4 localhost
我想让代理侦听套接字以确定打开套接字打开请求的机器。例如在我打电话的客户中。
dbPort = 4000;
openDatabaseConnection("10.1.2.3", dbPort);
...
openDatabaseConnection("10.1.2.4", dbPort);
所以这两个调用相同的套接字。我希望我的代理服务器在4000
上侦听,并通过指定的IP地址将到10.1.2.3的那个重定向到正确的服务器。
是否有POSIX调用来从套接字头获取这个?
我的问题是:什么是POSIX调用来确定重定向套接字打开请求的预期IP?
答
不,没有办法知道客户端程序中使用了哪个IP地址。主机文件定义了一组别名,并且名称/地址解析器将别名替换为实际地址(在您的案例中为localhost
),这会使您失去有关使用的别名的所有信息。没有“重定向”,在客户端连接之前进行别名替换。
解决问题的最简单方法不是通过hosts
文件使用IP地址别名,而是使用不同的端口号。
您也许可以为不同的地址添加“虚拟”接口,并让代理服务器监听这两个接口上的连接。