我和我的Mbed控制器战斗,它的获奖:/ 部分我下面的代码:mbed套接字连接需要很长的时间
eth.connect();
pc.printf("ethernet OK");
sock.set_blocking(false,200);
pc.printf(" socket setting OK ");
sock.connect("192.168.1.100", 80);
pc.printf("GO! GO! GO!");
conn = sock.is_connected();
当服务器上,我可以带插座连接,并有没问题。但是当我关闭服务器时,我的程序在sock.connect(...)行中等待很长时间,然后向前移动。我希望它向前移动,但我不想等很长时间:/
我发现我应该将套接字设置从阻塞更改为非阻塞,并且从默认值= 1500更改为更少。我到处都改变了它,我可以:
- 我socket.h中库的一部分:void set_blocking(bool blocking, unsigned int timeout=200);
- 我socket.cpp库的一部分:Socket::Socket() : _sock_fd(-1), _blocking(false), _timeout(200)
,仍然一无所获。它等待约17-18秒,但我想将其更改为最大。 1-2sec。
我会很高兴,如果你给我的任何提示:)
你好萨拉:)我使用不同的库 - 我刚刚导入EthernetInteface,并在那里我发现了套接字和其他文件,但版权是从2012年和源代码看起来不同。它是我应该下载的任何其他图书馆吗?也许这是某种“不智能”的问题,但我在mbed编程方面很新颖:) 你在问关于TCPSocket.cpp,但在EthernetInterface中该文件甚至不存在,所以我想它应该是别的东西。你能说我应该找什么吗?我上传了最新的EthernetInterface,但它仍然是一样的。 –
编辑之后:我使用Socket:https://developer.mbed.org/handbook/Socket,它实际上非常类比。我尝试将其设置为blocking = true,timeout = 200和其他许多组合,但仍然没有任何结果:/ –
切换到mbed OS 5. EthernetInterface包含在那里。您提到的EthernetInterface库不再受支持。从克隆https://github.com/ARMmbed/mbed-os-example-blinky开始,然后添加相同的代码。这种方式你应该有最新的和最好的版本,它可能会工作。 –