我和我的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開始,然後添加相同的代碼。這種方式你應該有最新的和最好的版本,它可能會工作。 –