Arduino以太网(板卡或屏蔽)最多支持4个连接。如果充当服务器,很容易导致拒绝服务:只需打开4个连接到Arduino而不发送任何数据。服务器代码永远不会意识到已建立连接,因为当连接有可用数据时,EthernetServer :: available()方法仅返回EthernetClient。因此,只要客户端维护它们,连接就会保持打开状态,防止Arduino处理其他请求,而服务器在一段时间后没有机会关闭它们。
所以问题是:有没有办法在空闲连接上设置超时,可能是在Wiznet芯片级别?
答案 0 :(得分:0)
作为背景信息,对话框的GET HTTP模型称为“无状态”,这意味着连接可以关闭然后重新打开而不会丢失信息。
但是,有一个HTTP关键字,浏览器可以要求保持连接打开。
允许服务器关闭连接,实际上HTTP / 1.1定义了从服务器到浏览器的消息。
因此,在您控制所有软件(TCP / IP堆栈和服务器代码)的Arduino中,您应该修改WizNEt库或添加自己的包装器,使对话超时并关闭它,独立浏览器正在做什么。
因此,没有DNS(或者至少保持DNS的开放风格)。
获取HTTP / 1.1规范(它在网上)以获取更多信息和细节。