极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10878|回复: 4

EthernetClient连接成功,偶尔读取不到数据

[复制链接]
发表于 2015-2-28 13:29:36 | 显示全部楼层 |阅读模式
小白求助啊,在使用Ethernet库的时发现了很多奇怪的问题,求大神帮忙。

1.EthernetClient连接成功,偶尔获取不到结果。
   在使用EthernetClient读取网页返回结果时,偶尔会遇到client.connect(server, 80)成功了,发送GET请求后,client.available()返回结果为0,但有时就正常,始终找不到原因在哪里。

2.client.connected()什么时候会返回false
   看API了解到client.connected()返回EthernetClient的连接状态,通常代码都会if (!ipClient.connected())判断没有连接时,执行client.stop()方法
   但是我发现,只有在出现问题1,即client.connect(server, 80)成功client.available()返回结果为0时才会执行if (!ipClient.connected())内容,如果client.available()返回结果正常,char c = ipClient.read()读取完所有数据后,确没有执行if (!ipClient.connected())内容。

3.client.stop()具体在做什么
   client.stop()方法API解释是断开连接,但是我发现及时没有执行,依然可以再次创建连接。那么如果不执行client.stop()会有什么影响吗?具体client.stop()在做哪些事情?client.stop()是不是必须的呢?


小白在此感谢各位大爷了!
回复

使用道具 举报

发表于 2015-3-1 14:34:02 | 显示全部楼层
板卡质量问题吧
我以前也有过此类问题
一个杂牌2650MEGA一块小板28J60。有时候正常有时候就是不正常。多数时候是获取IP都失败。
换了一个Miroduino和他们的网卡就ok了
回复 支持 反对

使用道具 举报

发表于 2015-3-2 14:21:15 | 显示全部楼层
我用的W5100网络扩展模块,正常。
回复 支持 反对

使用道具 举报

发表于 2015-3-2 14:22:17 | 显示全部楼层
我用的W5100网络扩展模块,正常。
回复 支持 反对

使用道具 举报

发表于 2015-3-2 14:26:02 | 显示全部楼层
client.stop()是必须的,跟TCP协议建立连接“三次握手”原理一样
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 14:26 , Processed in 0.034792 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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