这篇日志会比较深入的理解在MQX中使用UDP进行数据传输的方法。
先看一下UDP加载函数:函数首先建立套接字,然后指定本地IP地址和端口号,远程IP地址和端口号,以及广播地址和端口号,接着指定套接字的选项为无等待,最后绑定本地IP。
下面是UDP发送数据函数:
下面是UDP接收数据函数:数据发送的源地址会自动存入remote_sin中,所以在发送函数中调用remote_sin就可以给源地址回复数据。
以下是函数的调用例程:首先给udp_socket_ptr分配地址控件,然后指定本地端口号是929,远程端口号是929,远程IP地址是0.0.0.0用于记录远程IP地址,给远程IP地址回复数据。函数调用成功后,会返回0,否则可以根据错误提示,查找原因。
接下来用 UDP_ReceiveData函数接收数据,用 UDP_SendData函数发送数据,但是,会发现上面看似很正常但是,远程主机接不到回复数据,问题在这里,看下面函数,使用 UDP_ReceiveData接收数据后, remote_sin的IP地址可以更改为远程IP,但是端口号是随机的,所以希望将数据再发回远程主机,必须重新指定端口号。
一切就这么简单,但是解决这个问题花费了很长时间,把日志写出来,希望后面看到的朋友能够少走一下弯路。
原创性文章,转载请注明出处 http://user.qzone.qq.com/2756567163 。
优快云:http://blog.youkuaiyun.com/qingwufeiyang12346 。
先看一下UDP加载函数:函数首先建立套接字,然后指定本地IP地址和端口号,远程IP地址和端口号,以及广播地址和端口号,接着指定套接字的选项为无等待,最后绑定本地IP。


下面是UDP发送数据函数:

下面是UDP接收数据函数:数据发送的源地址会自动存入remote_sin中,所以在发送函数中调用remote_sin就可以给源地址回复数据。

以下是函数的调用例程:首先给udp_socket_ptr分配地址控件,然后指定本地端口号是929,远程端口号是929,远程IP地址是0.0.0.0用于记录远程IP地址,给远程IP地址回复数据。函数调用成功后,会返回0,否则可以根据错误提示,查找原因。

接下来用 UDP_ReceiveData函数接收数据,用 UDP_SendData函数发送数据,但是,会发现上面看似很正常但是,远程主机接不到回复数据,问题在这里,看下面函数,使用 UDP_ReceiveData接收数据后, remote_sin的IP地址可以更改为远程IP,但是端口号是随机的,所以希望将数据再发回远程主机,必须重新指定端口号。

一切就这么简单,但是解决这个问题花费了很长时间,把日志写出来,希望后面看到的朋友能够少走一下弯路。
原创性文章,转载请注明出处 http://user.qzone.qq.com/2756567163 。
优快云:http://blog.youkuaiyun.com/qingwufeiyang12346 。