0

目前,这是我的困境。我有 2 个 fd:x 和 y。当 write(x) 发生时,它必须去 x-tunnel,而 write(y) 应该去 y-tunnel。我无法为每个连接创建路由规则(此处未提及的原因)

当我接受连接时,我可以设置一个 sock opt 还是有其他方法可以做到这一点?

谢谢

4

2 回答 2

0
  • 您可以在 x、y 隧道的特定接口上控制 sock 绑定
  • 检查 setsockopt 中的 SO_DONTROUTE 选项
于 2013-05-27T11:15:44.023 回答
-1

您的描述很粗略,我认为 SO_REUSEADDR 和 SO_REUSEPORT 的 optname 的 setsockopt() 可能会对您有所帮助,但我不确定。它不能“指示”数据包进入哪个接口,但您可以通过您的工具来指示它们。

这里有一些关于 Unix 网络编程的参考资料,如果你想了解更多细节,可以阅读第 7.5 章中的它们和示例。

SO_REUSEADDR 套接字选项有四种不同的用途:

  1. SO_REUSEADDR 允许侦听服务器启动并绑定其众所周知的端口,即使存在使用此端口作为其本地端口的先前建立的连接。
  2. SO_REUSEADDR 允许在与绑定到通配符地址的现有服务器相​​同的端口上启动新服务器,只要每个实例绑定不同的本地 IP 地址。
  3. SO_REUSEADDR 允许单个进程将同一个端口绑定到多个套接字,只要每个绑定指定不同的本地 IP 地址。
  4. SO_REUSEADDR 允许完全重复的绑定:IP 地址和端口的绑定,当相同的 IP 地址和端口已经绑定到另一个套接字时,如果传输协议支持它。通常仅 UDP 套接字支持此功能。
于 2013-05-27T10:48:38.603 回答