Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何为UDP连接选择以太网端口?_Linux_Sockets_Udp_Ethernet - Fatal编程技术网

Linux 如何为UDP连接选择以太网端口?

Linux 如何为UDP连接选择以太网端口?,linux,sockets,udp,ethernet,Linux,Sockets,Udp,Ethernet,我有点麻烦。我会说主要原因是因为我没有完全研究OSI模型 我的Linux机器的ETH0端口上有一个作为UDP输入的流。我用我的linux机器在上面执行一些功能。现在,我想再次将另一个流(来自命名管道)作为UDP输出发送到机器的ETH1端口 输入流来自编码器,输出也将进入Windows PC进行测试 Linux机器是UbuntuOS12 这可能吗?我如何才能做到这一点?如果你能从头开始告诉我一切,我将不胜感激 谢谢 编辑1:只是想让你尝一尝我心中的滋味: 让我试着用外行的语言来解释它(我相信答案对

我有点麻烦。我会说主要原因是因为我没有完全研究OSI模型

我的Linux机器的ETH0端口上有一个作为UDP输入的流。我用我的linux机器在上面执行一些功能。现在,我想再次将另一个流(来自命名管道)作为UDP输出发送到机器的ETH1端口

输入流来自编码器,输出也将进入Windows PC进行测试

Linux机器是UbuntuOS12

这可能吗?我如何才能做到这一点?如果你能从头开始告诉我一切,我将不胜感激

谢谢

编辑1:只是想让你尝一尝我心中的滋味:

让我试着用外行的语言来解释它(我相信答案对你们来说已经足够了,哈哈),但无论如何:

我有一个生成视频流的设备。那个视频流是从一根我插入CPU上标记为“ETH0”的孔中的电缆中流出的。现在有一个地址是“UDP”,我可以用这个地址在我的linux机器上查看视频流。现在我在这方面做了一些有趣的事情(解复用、编码、再复用),瞧,我有一个“命名管道”,我想输出到另一个设备

现在,另一个设备通过另一根插入CPU“ETH1”孔的电缆连接到我的linux机器。我知道我必须在第二根电缆上以“UDP数据包”的形式发送数据,并带有明确的地址(和端口?)

我如何计算细节?
我如何“选择”哪个UDP越过哪个ETH?

由操作系统的IP路由器决定使用哪个接口。通常情况下,您并不真的想“将某些东西从eth1中推出”,因为这将是OSI级别1的操作。你在3级工作,所以你更希望的是“发送一些东西到这样一个地方,所以通过eth1发送是最佳的”


最简单的解决方案是定义一个静态路由,告诉系统应该通过一个特定的接口或通过一个具有特定IP的接口将IP数据报发送到一个特定的位置。这两个选项都包含在中。

由操作系统的IP路由器决定使用什么接口。通常情况下,您并不真的想“将某些东西从eth1中推出”,因为这将是OSI级别1的操作。你在3级工作,所以你更希望的是“发送一些东西到这样一个地方,所以通过eth1发送是最佳的”


最简单的解决方案是定义一个静态路由,告诉系统应该通过一个特定的接口或通过一个具有特定IP的接口将IP数据报发送到一个特定的位置。中介绍了这两个选项。

您正在使用以太网和UDP。这些与OSI模型没有任何关系,OSI模型已经失效,并且不适用于现实世界中现存的任何东西。它们确实与TCP/IP模型和以太网模型有关,尽管我无法理解“以太网端口”是什么。不清楚你在问什么。@EJP我相信这里的“以太网端口”指的是NIC上的物理以太网接口。很抱歉用词不当,我的大脑已经因为几个小时的谷歌搜索和可能阅读了很多不相关的东西而变得混乱。通过以太网端口,我想说“插入以太网电缆的位置”。请检查EDIT1您正在使用以太网和UDP。这些与OSI模型没有任何关系,OSI模型已经失效,并且不适用于现实世界中现存的任何东西。它们确实与TCP/IP模型和以太网模型有关,尽管我无法理解“以太网端口”是什么。不清楚你在问什么。@EJP我相信这里的“以太网端口”指的是NIC上的物理以太网接口。很抱歉用词不当,我的大脑已经因为几个小时的谷歌搜索和可能阅读了很多不相关的东西而变得混乱。通过以太网端口,我想说“插入以太网电缆的位置”。请检查EDIT1Hey!请检查编辑。。。它太长了,不适合一个人comment@vedantgala答案还是一样的。设置PC和第二台设备之间的静态路由,然后在它们之间随意发送数据报。在代码中,绑定到接口的IP地址并将数据发送到设备的地址-Ubuntu将确定使用哪个物理接口;假设我有数据报,我想输出为UDP(并最终通过ETH1发送)。假设地址是udp://@229.1.1.11:5000。我如何知道这将结束于ETH1而不是ETH0?因为同时从另一个地址udp://@225.1.0.122:1234连续接收数据(通过ETH0)。在udp://@229….之前/之后是否有其他地址要分配。。。。这将区分两个ETH0和ETH1?这是在我定义了static之后routes@vedantgala不需要分配任何额外的东西。为了验证路由,您可以ping远程设备,并使用类似wireshark的程序来监控流量。在那里你应该看到哪个接口ping去了,哪个接口pong来了。嘿!请检查编辑。。。它太长了,不适合一个人comment@vedantgala答案还是一样的。设置PC和第二台设备之间的静态路由,然后在它们之间随意发送数据报。在代码中,绑定到接口的IP地址并将数据发送到设备的地址-Ubuntu将确定使用哪个物理接口;假设我有数据报,我想输出为UDP(并最终通过ETH1发送)。假设地址是udp://@229.1.1.11:5000。我如何知道这将结束于ETH1而不是ETH0?因为同时从另一个地址udp://@225.1.0.122:1234连续接收数据(通过ETH0)。在udp://@229….之前/之后是否有其他地址要分配。。。。这将区分两个ETH0和ETH1?这是在我之后