[Seek Help] QT Linux 系统下接受槽函数不能触发 Resolved
Tofloor
poster avatar
绍贝格尔
deepin
2023-06-19 23:12
Author

Linux 系统下接受槽函数不能触发,选择网卡进行广播,回复的不能触发槽函数在win没这个问题

samp15_3UDP.zip

Reply Favorite View the author
All Replies
忘记、过去
deepin
2023-06-20 02:38
#1

截图_选择区域_20230619183309.png

截图_选择区域_20230619183250.png

你只有一个 UdpSocket,使用 UDP 单播的时候,发送和接收的 port 必须一致,不然啥都收不到;或者就要两个 socket,一收一发,分别绑定到发送端口和接收端口上。

Linux 上 UDP 广播和组播更复杂一点,和 Windows 上对 socket 的处理不一样。在 Linux 上想接收 UDP 广播或者组播,我记得 bind 的 IP 地址必须是 QHostAddress::AnyIPv4;Windows 上却可以 bind 到本机 IP 上,也能收到广播/组播信息。


这儿有一份改好的,可以看看
samp15_3UDP.tar.gz

Reply View the author
绍贝格尔
deepin
2023-06-20 18:38
#2
忘记、过去

截图_选择区域_20230619183309.png

截图_选择区域_20230619183250.png

你只有一个 UdpSocket,使用 UDP 单播的时候,发送和接收的 port 必须一致,不然啥都收不到;或者就要两个 socket,一收一发,分别绑定到发送端口和接收端口上。

Linux 上 UDP 广播和组播更复杂一点,和 Windows 上对 socket 的处理不一样。在 Linux 上想接收 UDP 广播或者组播,我记得 bind 的 IP 地址必须是 QHostAddress::AnyIPv4;Windows 上却可以 bind 到本机 IP 上,也能收到广播/组播信息。


这儿有一份改好的,可以看看
samp15_3UDP.tar.gz

不行我主要使用的是有线网广播,你改的这个任然不行

Reply View the author
绍贝格尔
deepin
2023-06-20 18:54
#3
忘记、过去

截图_选择区域_20230619183309.png

截图_选择区域_20230619183250.png

你只有一个 UdpSocket,使用 UDP 单播的时候,发送和接收的 port 必须一致,不然啥都收不到;或者就要两个 socket,一收一发,分别绑定到发送端口和接收端口上。

Linux 上 UDP 广播和组播更复杂一点,和 Windows 上对 socket 的处理不一样。在 Linux 上想接收 UDP 广播或者组播,我记得 bind 的 IP 地址必须是 QHostAddress::AnyIPv4;Windows 上却可以 bind 到本机 IP 上,也能收到广播/组播信息。


这儿有一份改好的,可以看看
samp15_3UDP.tar.gz

win
image.png

deepin

image.png

Reply View the author
绍贝格尔
deepin
2023-06-20 19:31
#4

大佬给的端口号是反的,改下就好,感谢大佬 @忘记、过去

Reply View the author