uIP接收数据丢失

2019-08-14 17:23发布

实验52中的文件: tcp_client_demo.c 中

if (uip_newdata()) { if((tcp_client_sta&(1<<6))==0) //收到过数据并且已经处理/还未收到过数据 { if(uip_len>199) {    ((u8*)uip_appdata)[199]=0; }         strcpy((char*)tcp_client_databuf,uip_appdata);       tcp_client_sta|=1<<6;//表示收到客户端数据 }   }else if(tcp_client_sta&(1<<5))//有数据需要发送

上述中的字节复制:  strcpy((char*)tcp_client_databuf,uip_appdata);  如果中间某个字节的值为0x00,则后面的所有字节全部丢失。

由于有N多程序已经通过服务器端程序在用,所以不能修改服务器端程序。请教大师们: 如何从接收进来的字节完整低复制到 tcp_client_databuf 中???








友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
QFTEK
1楼-- · 2019-08-15 13:39
buf 加个长度声明

uIP 或 lwIP 很灵活,号称轻量级的tcp/ip协议。 
之前用DM9000AEP / DM9000CEP +uIP  lwIP 做以太网络协议时,仔细研究过一段时间,有这方面兴趣可交流。 
jonny.chu@qftek.com  Tel:13554902206
liwanfei
2楼-- · 2019-08-15 14:51
给前辈大师谢过了。
hhj_jstu
3楼-- · 2019-08-15 20:11
回复【2楼】正点原子:
---------------------------------
求教一下原子哥,我在用UIP 进行WEB通信时,芯片ENC28J60,单片机发数据时会丢数据,发送一帧数据不能超过1200字节左右,超过字节部分的数据浏览器就会收不到,那个芯片最大可以发送1500的数据,我改成一次发送给500字节数据,等待ACK进行多次发送,超过1200左右字节浏览器还是会收不到,请教一下原因?
nonplus
4楼-- · 2019-08-16 00:48
严重建议:
MICREL KSZ8851SNL 性能、价格比台系芯片强很多,特别插拔不能link的bug不存在。另外SPI接口,硬件线路及软件驱动都容易。

WIZNET W5500 ,硬件集成TCP/IP协议栈。不要哪么费心费力去调试uIP lwIP之类的东东,硬件SPI接口,线路简单。

还有SMSC的相关芯片,性能超强。某些台系芯片在系统上电启动之后再插网线无法LINK这种低级bug要小心。

哪些用台系芯片的,要好好考虑一下芯片BUG,及原厂及代理商是否能出质量承诺书,及硬件软件的复杂程度。
有更好的,为什么选它 ?
QFTEK
5楼-- · 2019-08-16 04:05
 精彩回答 2  元偷偷看……
wjcbeijing
6楼-- · 2019-08-16 08:10
我也遇到类似问题, 发送16进制数据 遇到 0X00 后面的数据都丢失了。具体怎么修改,没找到要改的地方,求具体操作!

一周热门 更多>