完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
每次创建socket时,总是要报socket(0) is not closed(0x22)., |
|
相关推荐
4个回答
|
|
不知道你用的是Wiznet公司的那个模块,我以前用过5300,5500。你出现的这个问题建议你可以通过以下方式排除问题:
(1)排除焊接问题,如果焊接不好,则数据读写就错误,可以通过读取一个固定寄存器打印出来看你的MCU和wiznet芯片之间的数据连接是否正常。 (2)排除网络端故障,这个可以通过芯片在硬件联网成功后的指示灯初步判断网络是否正常。 (3)创建接口,用简单的ICMP协议中来做双向ping操作。 以上都没有问题,再考虑创建UDP,TCP包协议。因为你的故障原因描述不是很详细,只能提这点小建议,希望你帮助到你。 |
|
|
|
这可能是由于在创建 socket 之前没有正确地关闭之前的 socket 导致的。在使用 WIZnet 的模块时,每个 socket 只能同时被一个任务所使用,因此当一个任务要使用 socket 时,必须先确保之前使用的 socket 以正确的方式被关闭。
您也可以尝试增加一个延迟时间,并在创建 socket 之前先等待片刻,以确保之前的 socket 已被关闭。此外,您需要确保正确地设置 socket 的通讯协议和端口号以及 IP 地址等参数,同时确认您是否有足够的内存空间来创建新的 socket。 至于为什么会处于 UDP 状态,这可能是因为您在代码中指定了 UDP 通讯协议,或者可能是默认的协议,需要检查和确认您的代码中的设置。 |
|
|
|
原因:
这是因为网卡在link up时会去检查网络联网状态,会调用"sal_check_netdev_internet_up"这个函数,在这个函数中会创建"net_work"工作队列,处理函数为"check_netdev_internet_up_work",在这个处理函数中会去申请UDP的socket向"link.rt-thread.org"这个网址发送系统版本信息,如果没有接收到回复则判断该网卡无法联网。 |
|
|
|
原因:
这个是因为网卡在link up时会去检查是否具有联网功能。调用的主要函数是: "netdev_low_level_set_link_status"设置网卡状态--->"sal_check_netdev_internet_up"创建"net_work"工作队列回调函数为"check_netdev_internet_up_work".在这个回调函数中会去申请UDP socket往"link.rt-thread.org"这个网址发送系统的版本信息,如果接收到回复则认为该网卡成功连接到外网。 解决: 关闭联网状态检查功能。宏定义为: SAL_INTERNET_CHECK |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AI模型部署边缘设备的奇妙之旅:边缘端设备的局域网视频流传输方案
1733 浏览 0 评论
1589 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
6878 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1914 浏览 0 评论
5149 浏览 0 评论
79727 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-22 22:20 , Processed in 0.740166 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191