我正在尝试使用socat
. 我知道这个过程会丢失帧边界,但在这种情况下这不是问题。我设法使用以下命令使其部分工作:
socat TCP-LISTEN:20000,fork UDP4-LISTEN:10000,reuseaddr
即,socat
等待客户端连接到 TCP 套接字,然后派生一个新的子进程来侦听 UDP 套接字。多个客户端应该能够使用 TCP 进行连接,并且每个客户端都应该收到每个接收到的 UDP 消息。只要只有一个端点向 UDP 套接字发送数据,这种方法就可以工作。但是,如果第二个端点正在向 UDP 套接字发送数据,则该数据将不会通过已建立的 TCP 连接转发。
似乎一旦接收到第一个数据包或过滤从其他主机发送的数据,就会在分叉子进程中socat
调用UDP 套接字。connect()
有什么方法可以指示socat
不过滤 UDP 流量并将数据包从发送到侦听 UDP 套接字的任何端点转发?