Feescale K60开发笔记14: 再议UDP数据传输
2017-04-16 01:17
267 查看
这篇日志会比较深入的理解在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。
CSDN:http://blog.csdn.net/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。
CSDN:http://blog.csdn.net/qingwufeiyang12346。
相关文章推荐
- 开发Android手机间UDP传输数据系统要慎重
- Feescale K60开发笔记6: UDP发送数据方法
- Android开发--Udp方式的数据传输
- Android开发笔记之数据传输中的常见加密AES\DES\DES3\RSA
- 4、contiki系统开发-UDP-IPV6数据传输功能测试
- Feescale K60开发笔记5: K60 Bootloader++的使用
- Feescale K60开发笔记2: TFTP服务的启用
- TCP/IP网络编程 学习笔记_14 --多种I/O函数(数据传输扩展)
- TCP/IP网络编程 学习笔记_14 --多种I/O函数(数据传输扩展)
- swift开发笔记14 - 解析json数据文件
- netty开发tcp数据传输编解码框架使用
- java开发接口利用http协议传输数据
- UDT协议-基于UDP的可靠数据传输协议(转)
- Android开发学习笔记:数据存取之File浅析
- WP开发:使用JSON格式传输应用数据
- ios开发之发送UDP广播并接收数据
- iOS开发笔记--数据持久化的四种方式
- 开发笔记 - PHP返回的数据问题
- Android开发之局域网UDP传输
- UDT协议-基于UDP的可靠数据传输协议