File tree Expand file tree Collapse file tree 3 files changed +42
-1
lines changed Expand file tree Collapse file tree 3 files changed +42
-1
lines changed Original file line number Diff line number Diff line change @@ -884,11 +884,12 @@ Tells the server to begin listening for incoming connections.
884884
885885```
886886server.begin()
887+ server.begin(port)
887888
888889```
889890
890891#### Parameters
891- None
892+ - port (optional): the port to listen on (int)
892893
893894#### Returns
894895None
Original file line number Diff line number Diff line change @@ -255,10 +255,13 @@ class EthernetServer : public Server {
255255private:
256256 uint16_t _port;
257257public:
258+ EthernetServer () : _port(80 ) { }
258259 EthernetServer (uint16_t port) : _port(port) { }
259260 EthernetClient available ();
260261 EthernetClient accept ();
261262 virtual void begin ();
263+ void begin (uint16_t port);
264+ void end (uint16_t timeout = 5000 );
262265 virtual size_t write (uint8_t );
263266 virtual size_t write (const uint8_t *buf, size_t size);
264267 virtual operator bool ();
Original file line number Diff line number Diff line change @@ -37,6 +37,43 @@ void EthernetServer::begin()
3737 }
3838}
3939
40+ void EthernetServer::begin (uint16_t port)
41+ {
42+ end ();
43+ _port = port;
44+ begin ();
45+ }
46+
47+ void EthernetServer::end (uint16_t timeout)
48+ {
49+ for (uint8_t i=0 ; i < MAX_SOCK_NUM; i++) {
50+ if (server_port[i] == _port) {
51+ Ethernet.socketDisconnect (i);
52+ }
53+ }
54+ unsigned long start = millis ();
55+ bool allClosed = false ;
56+ while (!allClosed && millis () - start < timeout) {
57+ allClosed = true ;
58+ for (uint8_t i=0 ; i < MAX_SOCK_NUM; i++) {
59+ if (server_port[i] == _port) {
60+ if (Ethernet.socketStatus (i) == SnSR::CLOSED) {
61+ server_port[i] = 0 ;
62+ } else {
63+ allClosed = false ;
64+ }
65+ }
66+ }
67+ delay (1 );
68+ }
69+ for (uint8_t i=0 ; i < MAX_SOCK_NUM; i++) {
70+ if (server_port[i] == _port) {
71+ Ethernet.socketClose (i);
72+ server_port[i] = 0 ;
73+ }
74+ }
75+ }
76+
4077EthernetClient EthernetServer::available ()
4178{
4279 bool listening = false ;
You can’t perform that action at this time.
0 commit comments