嵌入式技术william hill官网
直播中

贾飞小

7年用户 1754经验值
私信 关注
[问答]

wiznet创建socket失败有大佬知道这是为什么吗

每次创建socket时,总是要报socket(0) is not closed(0x22).,
持续几次后才创建成功,而且我在初始化时在wiz_socket_init中增加了关闭每个socket的语句,但是还是会出现这种情况,
有大佬知道这是为什么吗,为什么会处于UDP状态

回帖(2)

LL-LING宁

2023-4-20 15:46:38
不知道你用的是Wiznet公司的那个模块,我以前用过5300,5500。你出现的这个问题建议你可以通过以下方式排除问题:
(1)排除焊接问题,如果焊接不好,则数据读写就错误,可以通过读取一个固定寄存器打印出来看你的MCU和wiznet芯片之间的数据连接是否正常。
(2)排除网络端故障,这个可以通过芯片在硬件联网成功后的指示灯初步判断网络是否正常。
(3)创建接口,用简单的ICMP协议中来做双向ping操作。
以上都没有问题,再考虑创建UDP,TCP包协议。因为你的故障原因描述不是很详细,只能提这点小建议,希望你帮助到你。
举报

吴达川

2023-10-27 16:35:03
环境:
        rt-thread、wiznet-latest、W5500
原因:
        这是因为网卡在link up时会去检查联网状态。调用的主要函数为: ”netdev_low_level_set_link_status“--->”sal_check_netdev_internet_up“--->”check_netdev_internet_up_work“。
在"check_netdev_internet_up_work"函数中,会申请一个UDP socket向网址为"link.rt-thread.org"端口为8101发送系统的版本信息,如果接收到回复则认为该网卡具备联网功能。
解决:
    关闭联网状态检查功能,宏定义为"SAL_INTERNET_CHECK".
        在menuconfig中进行关闭:
2.png

举报

更多回帖

发帖
×
20
完善资料,
赚取积分