0

我的局域网中有一个嵌入式设备,计算机中有一个 Linux 中的 c++ 应用程序。我已经从 C++ 对我的子网广播地址进行了 UDP 广播,并且我的设备返回了一条带有签名的消息。他们俩现在都有彼此的IP地址。我需要从我的 C++ 专门向我的设备 IP 发送一个 UDP 数据包。对我的设备的初始调用是通过 UDP 完成的,但它使用的是套接字选项中的广播选项。我对数据包生成工具的一些实验给我的印象是 UDP 使用 MAC ID 来查找目的地。那么,如果我想向 LAN 中的特定 IP 发送 UDP 数据包,C++ 中的方法应该是什么?谢谢

4

3 回答 3

1

如果您发送广播并且希望通过 UDP 得到答复,您应该通过recvfrom调用接收它们。这将填写发件人的地址。使用接收到的地址信息发送 UDP 的相应调用是sendto

于 2013-07-02T12:33:08.033 回答
0

您没有指定操作系统,但是...

如果需要,您可以使 UDP 套接字使用连接。这意味着进一步发送到该套接字将转到您“连接”到的 IP,尽管 UDP 是无连接的。

于 2013-07-02T12:27:45.707 回答
0

根据您对 stefaanv 的回复,听起来您的问题实际上是“如何从线程 A 获取 IP 地址到线程 B?”,其中线程 A 接收对广播消息的响应,线程 B 执行特定于设备的操作沟通。

一种方法是从线程 A 创建线程 B,并将 IP 地址作为参数传递给线程 B 的函数。这样线程 B 从一开始就知道要与哪个 IP 地址通信。

如果线程 B 必须在线程 A 之前启动并运行,您可以使用全局变量共享 IP 地址,并使用例如信号量,以便线程 A 可以在设置 IP 地址时告诉线程 B。只需确保线程 A 是写入该全局变量的唯一线程,否则您将不得不设置另一层同步,例如使用互斥锁,以确保仅由一个线程在一次。

于 2013-07-02T14:00:41.123 回答