4424|7

1411

帖子

3

TA的资源

版主

楼主
 

关于LWIP(LAN8720)网络发送数据的问题 [复制链接]

5芯积分

在做系统测试的时候发现,LWIP(LAN8720)发送十六进制数据时,当发送的数据中有0x00时,网络就判断一串数据结束啦。
例如,发送数据为:aa 55 05 00 00 00 03 00 05 00 12 55 aa,通过调试发送,网络发送的数据只有aa 55 05,后面的数据都没有发送。
意思就是遇到0x00,网络就认为是空数据。


现在的疑问就是,如果我要发送数据0,怎么办呢?
如果发送两个字节的数,例如发送数字3,十六进制为00 03,那怎么发送呢?


希望能够得到解答,急~~

此帖出自stm32/stm8论坛

最新回复

本帖最后由 Ansersion 于 2019-8-29 11:45 编辑 annysky2012 发表于 2019-8-29 09:58 的确使用的是strlen函数,但是我发送的数字0,而不是‘\0’呀!!!这是为什么呢? '\0' == 0 你那不是“数字0”,“数字0”的ASCII码是48。 还有一个很常见的错误,就是把strcpy当memcpy来用,也会发生截断   详情 回复 发表于 2019-8-29 11:43
点赞 关注
个人签名

没有什么不可以,我就是我,不一样的烟火! 

 

回复
举报

98

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

你用的真的是LWIP的原生接口吗(write/send),原生接口必然带发送数据大小的,比如write (int fd, const void * buf, size_t count); 。感觉你使用了封装过的接口,而且接口里有strlen之类的字符串处理函数把发送数据截断了。

此帖出自stm32/stm8论坛

点评

的确使用的是strlen函数,但是我发送的数字0,而不是‘\0’呀!!!这是为什么呢?  详情 回复 发表于 2019-8-29 09:58
 
 

回复

140

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

使用write函数是不会出现上述情况的。

此帖出自stm32/stm8论坛

点评

这个我还没试,我试试  详情 回复 发表于 2019-8-29 10:15
没有试,我试试看  详情 回复 发表于 2019-8-29 09:59
 
 

回复

1411

帖子

3

TA的资源

版主

4
 
Ansersion 发表于 2019-8-28 09:38 你用的真的是LWIP的原生接口吗(write/send),原生接口必然带发送数据大小的,比如write (int fd, const v ...

的确使用的是strlen函数,但是我发送的数字0,而不是‘\0’呀!!!这是为什么呢?

此帖出自stm32/stm8论坛

点评

'\0' == 0 还有一个很常见的错误,就是把strcpy当memcpy来用,也会发生截断  详情 回复 发表于 2019-8-29 11:43
 
个人签名

没有什么不可以,我就是我,不一样的烟火! 

 
 

回复

1411

帖子

3

TA的资源

版主

5
 
加勒比海盗 发表于 2019-8-28 10:38 使用write函数是不会出现上述情况的。

没有试,我试试看

此帖出自stm32/stm8论坛
 
个人签名

没有什么不可以,我就是我,不一样的烟火! 

 
 

回复

1411

帖子

3

TA的资源

版主

6
 
加勒比海盗 发表于 2019-8-28 10:38 使用write函数是不会出现上述情况的。

这个我还没试,我试试

此帖出自stm32/stm8论坛
 
个人签名

没有什么不可以,我就是我,不一样的烟火! 

 
 

回复

98

帖子

0

TA的资源

一粒金砂(中级)

7
 
本帖最后由 Ansersion 于 2019-8-29 11:45 编辑
annysky2012 发表于 2019-8-29 09:58 的确使用的是strlen函数,但是我发送的数字0,而不是‘\0’呀!!!这是为什么呢?

'\0' == 0

你那不是“数字0”,“数字0”的ASCII码是48。

还有一个很常见的错误,就是把strcpy当memcpy来用,也会发生截断

此帖出自stm32/stm8论坛

点评

说的非常有道理。 我发送的时候,使用strlen来判断发送数据的长度和申请内存。按道理应该按字节来进行申请的。我把strlen和sizeof两个弄混淆啦 。现在问题已经解决,谢谢您!  详情 回复 发表于 2019-8-30 11:25
 
 
 

回复

1411

帖子

3

TA的资源

版主

8
 
Ansersion 发表于 2019-8-29 11:43 annysky2012 发表于 2019-8-29 09:58 的确使用的是strlen函数,但是我发送的数字0,而不是‘\0&rsqu ...

说的非常有道理。 我发送的时候,使用strlen来判断发送数据的长度和申请内存。按道理应该按字节来进行申请的。我把strlen和sizeof两个弄混淆啦 。现在问题已经解决,谢谢您!

此帖出自stm32/stm8论坛
 
个人签名

没有什么不可以,我就是我,不一样的烟火! 

 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表