1
3
所以我想我理解你的问题。 你有 1-将UDP数据发送到硬件设备(在端口1234上接收)的客户端应用程序,同时该应用程序也在端口1234上接收响应。 2-在端口1234上接收UDP数据并在端口1234上响应发送方的硬件设备。 所以,当您在同一台机器上模拟硬件设备时,最终会得到客户机应用程序和硬件仿真器,它们都在侦听相同IP地址127.0.0.1和端口1234上的UDP数据包? 我抓住了你的本质了吗? 如果是,您是否考虑向机器添加第二个IP地址?这确实 不 意味着你需要两张网卡,一张网卡可以有多个IP地址。这样,您就可以将两个“设备”放在一个单独的接口上,这样就可以克服在同一个接口上同时存在这两个设备的任何冲突。
例如,如果您有两个IP地址
客户端应用程序可以发送到
这里有一个链接来描述如何添加额外的IP地址。
这适用于2000/XP/2003,但Vista和Windows7的过程类似。 |
2
5
这是按设计的。 与需要连接的TCP相比,UDP通信的连接较少。 从UDP发送数据时,会广播数据。这意味着它只对在广播时还活着的接收器可用。 例子: TCP就像一个电话。呼叫者呼叫接收器。接受者接受呼叫,通信就发生了。如果接收器不可用,则调用者将收到一个错误。(调用者是客户端,而接收器是服务器在侦听端口) UDP就像调频广播。不管是否有人在另一端收听,收音机都会播放一首歌。如果接收器打开了收音机,他们就会收到这首歌。如果歌曲在10:30发送,而我的收音机在10:30打开,我就能听到这首歌。但如果我在10点35分发动袭击,那就意味着我错过了,再也听不到了。 更新 正如我所看到的,真正的问题是通过应用程序X在端口1111上传输(例如),通过同一台机器上的应用程序Y在端口1111上接收,这正是您试图实现的目标。 同样,我可以建议两种解决方法(不是很好,但可行)。
|
3
0
离开这段代码很长一段时间后,我有机会再次查看它,并为这个问题找到了令人尴尬的微不足道的解决方案。 结果是,调用我的UDP类的客户机代码将其设置为同时发送和接收。因此,我没有使用具有写访问权限的发送器和具有读访问权限的接收器,而是使用具有读/写权限的发送器和具有读/写权限的接收器。 这意味着,如果首先初始化发送器,它还将尝试在该端口上接收,因此它将获取传输的所有数据报。当接收器连接时,它从未接收到任何数据,仅仅是因为它被发送器消耗了。 |
slim71 · C-通过套接字向客户端发送UDP消息 6 年前 |
alsaleem · 执行UDP套接字。接收开始收集还是可用? 6 年前 |
ilya · 使用iperf3测量STM32板上的UDP吞吐量 6 年前 |
Ephemera · 服务器能否直接连接其连接的两个套接字? 6 年前 |
Jamboree · 跨NAT的UDP客户端无法从服务器接收数据 6 年前 |
Niranjan Godbole · 无法在c中使用udp发送数据# 7 年前 |
en Lopes · Java UDP服务器不工作 7 年前 |
Iago SP · 如何在golang中发送假udp包 7 年前 |