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条回答
正点原子
1楼-- · 2019-08-14 20:23
 精彩回答 2  元偷偷看……
liwanfei
2楼-- · 2019-08-14 21:47
谢谢大师。我想直接复制接收到的字节数组,就是不知道怎么复制哪个字节数组?现在知道进来的字节数组的长度为uip_len。

接收到字节的数组是哪个呢?
正点原子
3楼-- · 2019-08-15 01:52
uip_appdata
liwanfei
4楼-- · 2019-08-15 07:19
回复【4楼】正点原子:
---------------------------------
if((tcp_client_sta&(1<<6))==0)  //还未收到数据、或已收的数据已经被处理:
{
//接收字节:
if(uip_len>500)
{    
((u8*)uip_appdata)[499]=0;
}
else
{
((u8*)uip_appdata)[uip_len+1]=0;
}

for(i=0;i<uip_len;i++)
{
   tcp_client_databuf = uip_appdata;
}
tcp_client_sta|=1<<6; //表示收到客户端数据
}   
}
else if(tcp_client_sta&(1><<5)) //有数据需要发送


编译时报错的:
..uIP-APP cp_client_demo.c(88): error:  #852: expression must be a pointer to a complete object type
错误指向: tcp_client_databuf = uip_appdata;

我想直接复制接收到字节的那个数组啊,我跟踪了uip_buff这个数组,这个数组里的不是我发出去的字节。

原子大师,求助啊!
正点原子
5楼-- · 2019-08-15 09:12
for(i=0;i<uip_len;i++) 

   tcp_client_databuf = ((u8*)uip_appdata)
} >
liwanfei
6楼-- · 2019-08-15 13:27
 精彩回答 2  元偷偷看……

一周热门 更多>