目前,这是我的困境。 我有2个fd:x和y。当写(x)发生时,它必须进入x-tunnel并且write(y)应该进入y-tunnel。我无法为每个连接创建路由规则(此处未提及的原因)
我接受连接时是否有可以设置的袜子选项,还是有其他方法可以设置?
谢谢
答案 0 :(得分:0)
答案 1 :(得分:-1)
您的描述很粗略,我认为通过SO_REUSEADDR的optname和SO_REUSEPORT的setsockopt()可以帮助您,但我不确定。它不能“指示”数据包进入哪个接口,但您可以通过你的工具。
这里有一些关于Unix网络编程的参考资料,如果你想了解更多细节,你可以在第7.5章阅读它们和示例。
SO_REUSEADDR套接字选项有四个不同的用途:
- SO_REUSEADDR允许侦听服务器启动并绑定其众所周知的端口, 即使先前建立的连接存在使用此端口作为其本地 端口。
- SO_REUSEADDR允许在与...相同的端口上启动新服务器 绑定到通配符地址的现有服务器,只要每个实例 绑定不同的本地IP地址。
- SO_REUSEADDR允许单个进程将同一端口绑定到多个 套接字,只要每个绑定指定不同的本地IP地址。
- SO_REUSEADDR允许完全重复绑定:绑定IP地址 和端口,当相同的IP地址和端口已经绑定到另一个 socket,如果传输协议支持它。通常支持此功能 仅适用于UDP套接字。
醇>