UDP数据包到LAN中的特定IP

时间:2013-07-02 12:22:46

标签: c++ sockets network-programming udp embedded

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

3 个答案:

答案 0 :(得分:1)

如果您发送广播并希望通过UDP获得答案,则应通过recvfrom电话接收广播。这会填写发件人的地址。使用收到的地址信息发送UDP的相应调用是sendto

答案 1 :(得分:0)

您没有指定O / S,但是......

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

答案 2 :(得分:0)

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

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

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