Windows 7 在Windows 7上发送UDP广播

Windows 7 在Windows 7上发送UDP广播,windows-7,winsock,Windows 7,Winsock,我有一台电脑,有两个网卡连接到不同的网络(多宿网络设置)。我想在两个网络上发送UDP广播帧。帧的发送者IP地址必须是用于发送帧的适配器的IP地址。目标地址应该是有限的广播地址 客户应用程序不应使用管理权限运行(UAC不可接受) 如何将这些UDP帧发送到有限的广播地址(255.255.255.255)? 如何将这些帧发送到网络广播地址(x.y.z.255) 我知道如何使用原始套接字进行此操作。但是原始套接字只能与管理权限一起使用。您难道不能打开两个普通UDP套接字,将其中一个绑定到每个接口地址,然

我有一台电脑,有两个网卡连接到不同的网络(多宿网络设置)。我想在两个网络上发送UDP广播帧。帧的发送者IP地址必须是用于发送帧的适配器的IP地址。目标地址应该是有限的广播地址

客户应用程序不应使用管理权限运行(UAC不可接受)

如何将这些UDP帧发送到有限的广播地址(255.255.255.255)? 如何将这些帧发送到网络广播地址(x.y.z.255)


我知道如何使用原始套接字进行此操作。但是原始套接字只能与管理权限一起使用。

您难道不能打开两个普通UDP套接字,将其中一个绑定到每个接口地址,然后简单地发送到广播地址吗


据我所知,这将处理两个网络上的发送,并将确保发送的数据包具有正确的ip地址。如果您将一个套接字绑定到INADR_,那么它将不起作用。当然,如果机器中只有一个网络适配器,那么它将起作用。要创建一个完整的解决方案,最好迭代可用的地址并为每个地址创建一个套接字,绑定到每个地址并从每个地址发送。

否。绑定套接字会影响此套接字接受哪些接收到的数据包。发送的数据包根据IP路由规则进行路由。我可以迭代适配器和绑定到这些适配器的IP地址,并为每个IP地址发送网络广播。但这不会发送到有限的广播地址。你确定吗?发出SendTo时,套接字隐式绑定到用于从发送的本地套接字,以便收件人可以回复。您可以在实际操作中看到这一点,因为如果没有绑定或之前在套接字上发送,则无法执行RecvFrom。。。如果有两个接口都可以路由到同一个目的地,那么如果没有绑定,操作系统会选择一个。您可以在发出SendTo之前绑定以选择本地地址。啊,我明白了。你说得对!在Windows 7中,bind()调用影响帧的接收和传输。这与Windows XP行为不同,在Windows XP行为中,帧已使用任意适配器地址发送到所有适配器。您需要Windows XP的原始套接字来发送适当的源地址。但是Windows7向套接字绑定的适配器发送有限的广播。谢谢你,哈珀