野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15975|回复: 10

W5500用作TCP SERVER模式

[复制链接]
发表于 2019-1-14 10:08:36 | 显示全部楼层 |阅读模式
本帖最后由 夜乄歌 于 2019-1-14 11:03 编辑

最近在调试W5500的通信的时候遇到一个问题,作为TCP server的时候,我发送LOCAL,FORWARD11,板子接收到之后截取11,并转发至串口。我网口助手点击发送的时候慢慢点还可以,一旦连续点击速度过快,返回的数据就变成了11LOCAL,FORWARD11,我用逻辑分析仪查看了下,确实是一帧数据包含了两次LOCAL,FORWARD11(但是我处理接收只判断第一次的LOCAL,FORWAR)。但是我模块设置成client模式的时候这种情况就没有。试了5款助手,自动发送速度为100MS左右就会出现这个问题。所以,有没有哪位大佬遇到过类似情况并且已经解决了的。我使用的是W5500中断模式进行判断.....图片是我用Wireshark抓的数据.也显示了是一帧发送两次.这个是不是说明W5500接收正常,是工具那边发送的问题?
QQ图片20190114110134.png
回复

使用道具 举报

发表于 2019-1-14 11:10:09 | 显示全部楼层
是两次点击网口助手,w5500一次收到这两次的数据吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-14 11:14:00 | 显示全部楼层
八戒 发表于 2019-1-14 11:10
是两次点击网口助手,w5500一次收到这两次的数据吗?

不是,是我点击自动发送的时候,按理说我串口收到的应试只有11,但是偶尔会收到11LOCAL,FORWARD11,这就不正常了,感觉像有一次是吧两次发送的数据合并了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-14 11:20:12 | 显示全部楼层
.......我现在就想确认这个是不是由工具那边导致的,因为我的代码和设置我查了几天了都正常。只有确认没问题我才能进行PCB layout,不然指不定到时候出现什么问题
回复 支持 反对

使用道具 举报

发表于 2019-1-14 11:24:55 | 显示全部楼层
小包那有可能是tco的Nagle算法导致,可以尝试关闭Nagle算法;
在tcp粘包的时候,在接收tcp数据时需要处理一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-14 13:34:38 | 显示全部楼层
八戒 发表于 2019-1-14 11:24
小包那有可能是tco的Nagle算法导致,可以尝试关闭Nagle算法;
在tcp粘包的时候,在接收tcp数据时需要处理 ...

我接收到数据的时候检测下是否存在粘包?
回复 支持 反对

使用道具 举报

发表于 2019-1-14 15:59:11 | 显示全部楼层
使用tcp协议收到的是流数据,需要考虑流数据不是一次一包的情况,
收一次数据有可能是半包,1包半,两包等情况,包最好有协议格式,好分包。
回复 支持 反对

使用道具 举报

发表于 2019-1-16 22:07:10 | 显示全部楼层
采用lwip协议栈啊,用啥硬件协议栈
回复 支持 反对

使用道具 举报

发表于 2019-1-18 18:00:09 | 显示全部楼层
杰杰 发表于 2019-1-16 22:07
采用lwip协议栈啊,用啥硬件协议栈

我就喜欢老哥这么直爽
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-21 17:51:28 | 显示全部楼层
杰杰 发表于 2019-1-16 22:07
采用lwip协议栈啊,用啥硬件协议栈

对LWIP一点也不会,先从简单搞起啊
回复 支持 反对

使用道具 举报

发表于 2019-4-15 17:02:31 | 显示全部楼层
杰杰 发表于 2019-1-16 22:07
采用lwip协议栈啊,用啥硬件协议栈

W5500是全硬件支持,简单易上手
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-22 11:52 , Processed in 0.034635 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表