2017-03-16 186 views
1

我正在修改我的主机文件,以将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?

回答

0

不,没有办法知道客户端程序中使用了哪个IP地址。主机文件定义了一组别名,并且名称/地址解析器将别名替换为实际地址(在您的案例中为localhost),这会使您失去有关使用的别名的所有信息。没有“重定向”,在客户端连接之前进行别名替换。

解决问题的最简单方法不是通过hosts文件使用IP地址别名,而是使用不同的端口号。

您也许可以为不同的地址添加“虚拟”接口,并让代理服务器监听这两个接口上的连接。