首页 文章

从多个发件人接收UDP消息并通过TCP转发

提问于
浏览
0

我正在尝试使用 socat 在TCP上转发UDP流量 . 我知道这个过程会丢失帧边界,但在这种情况下这不是问题 . 我设法使用此命令部分工作:

socat TCP-LISTEN:20000,fork UDP4-LISTEN:10000,reuseaddr

即, socat 等待客户端连接到TCP套接字,然后分叉侦听UDP套接字的新子进程 . 多个客户端应该能够使用TCP进行连接,并且每个客户端都应该获得每个收到的UDP消息 . 只要只有一个 endpoints 将数据发送到UDP套接字,这就可以工作 . 但是,如果第二个 endpoints 正在向UDP套接字发送数据,则不会通过已 Build 的TCP连接转发该数据 .

似乎 socat 在收到第一个数据包或以其他方式过滤从其他主机发送的数据时,在分叉子进程中的UDP套接字上调用 connect() .

有没有办法指示 socat 不过滤UDP流量并从发送到侦听UDP套接字的任何 endpoints 转发数据包?

1 回答

  • 0

    我不认为这可以用socat完成,即使在我的2.0.0-b4版本中我也看不到“重用”选项 .

    假设命令:

    socat TCP-LISTEN:20000,fork,reuseaddr UDP-RECVFROM:10000,reuseaddr
    

    据我所知,在我的系统中,这将_770981_将UDP消息发送到TCP连接的客户端 all . 它只会将消息从一个UDP客户端一次发送到一个TCP客户端,一旦下一个UDP客户端连接它就会将数据发送到下一个TCP客户端 .

相关问题