这几天在移植intel的upnp库到dps/bios上,在upnp协议开始需要通过发送udp的M-SEARCH去搜索支持upnp协议的网络设备,建立了udp的socket,并通过sendto将M-SEARCH包发送出去之后发现总是无法收到网络设备的回复的200 OK,当然网络上是存在upnp设备的,通过etherpeek抓包发现,网络设备已经回复了200 OK的数据包,但是NDK却无法接收,并回复了ICMP 端口不可达的错误,一般ICMP端口不可达的错误出现在该端口不存在服务程序的时候,但是我是刚通过该端口发送了数据,而且立刻用该socket接收数据,怎么会出现ICMP端口不可达呢,分析代码发现在建立该socket的时候,没有用bind函数显式绑定ip地址和端口,虽然在调用sendto的时候,sendto函数也会绑定ip地址和端口,是不是在退出sendto函数后,绑定失效了呢,随后我在建立socket的时候显式调用bind函数绑定了ip地址和端口,运行测试发现就能接收数据了,
ccs中ndk不能接收数据包调试过程
最新推荐文章于 2022-04-08 22:33:39 发布