我有一个需要连接到服务器并发送 tcp 有效负载并等待响应的 c 程序。这适用于正常使用,但由于我有两个不同的网络接口,让我们在运行程序的计算机上调用它们 if0 和 if1,有时其中一个网络接口无法转发流量。不幸的是,这是我无法改变的事实。
由于操作系统无法帮助我将数据路由到正确的接口,因此为了优雅地处理此问题,我使用 if0 和 if1 发送有效负载。我创建了一个套接字,并使用 bind 将套接字绑定到特定接口,我对 if0 和 if1 都这样做。
不幸的是,这并没有按我的计划工作,因为我用来解析主机名的 gethostbyname 当然只使用了一个接口。不幸的是,我无法在这个特定问题上更改操作系统配置,我需要绕过操作系统中的任何逻辑并确保流量进入特定接口。
我有以下用于地址查找的代码:
struct hostent *remoteHostEnt = gethostbyname(hostName);
有什么方法可以让我使用特定的接口来制作 gethostbyname 吗?我想尝试使用 gethostbyname 同时使用 if0 和 if1 并使用任何可接受的结果。
我是否需要制作自己的 DNS 查找实现并为此使用套接字,或者我可以使用 posix c 中的某些东西?或者也许有一个我可以使用的图书馆?