ich mit meiner mbed-Controller ich kämpfen und es gewinnt:/ Teil meines Codes unter:mbed-Socket-Verbindung dauert lange
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();
Wenn der Server ist auf I mit Buchse verbinden kann und es kein Problem. Aber wenn ich meinen Server herunterfahre, wartet mein Programm lange in der sock.connect (...) Zeile und dann geht es weiter. Ich möchte, dass es vorwärts geht, aber ich möchte nicht so lange warten:/
Ich fand, dass ich Socket-Einstellung von Blockierung zu nicht blockierend ändern sollte, und Timeout von Standard = 1500 zu weniger. Habe ich es überall, wo ich konnte:
- Ein Teil meiner socket.h Bibliothek: void set_blocking(bool blocking, unsigned int timeout=200);
- Teil meiner socket.cpp Bibliothek: Socket::Socket() : _sock_fd(-1), _blocking(false), _timeout(200)
Und immer noch nichts. Es dauert ungefähr 17-18 Sekunden, aber ich möchte es auf max ändern. 1-2sek.
ich froh wäre, wenn Sie eine mir jeden Tipp geben :)
Hallo Sarah :) Ich benutze andere Bibliothek - ich habe gerade EthernetInteface importiert und dort fand ich Socket und andere Dateien, aber das Copyright ist von 2012 und Quellcode sieht anders aus. Ist es eine andere Bibliothek, die ich herunterladen soll? Vielleicht ist es eine Art "nicht schlau" Frage, aber ich bin sehr neu in mbed Programmierung :) Sie fragen über TCPSocket.cpp, aber in EthernetInterface diese Datei existiert gar nicht, also nehme ich an, es sollte etwas anderes sein. Können Sie mir sagen, wonach ich suchen soll? Ich habe das frischste EthernetInterface hochgeladen, aber es ist immer noch dasselbe. –
Nach der Bearbeitung: Ich benutze Socket von: https://developer.mbed.org/handbook/Socket und es ist eigentlich sehr analog. Ich habe versucht, es auf blocking = true, timeout = 200 und viele andere Kombinationen, aber immer noch nichts:/ –
Wechseln Sie zu mbed OS 5. EthernetInterface ist dort enthalten. Die von Ihnen erwähnte EthernetInterface-Bibliothek wird nicht mehr unterstützt. Beginnen Sie mit dem Klonen von https://github.com/ARMmbed/mbed-o-example-blinky und fügen Sie dann denselben Code hinzu. Auf diese Weise sollten Sie die neuesten und besten Versionen haben, und es wird wahrscheinlich funktionieren. –