File tree 3 files changed +42
-1
lines changed 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.
884
884
885
885
```
886
886
server.begin()
887
+ server.begin(port)
887
888
888
889
```
889
890
890
891
#### Parameters
891
- None
892
+ - port (optional): the port to listen on (int)
892
893
893
894
#### Returns
894
895
None
Original file line number Diff line number Diff line change @@ -255,10 +255,13 @@ class EthernetServer : public Server {
255
255
private:
256
256
uint16_t _port;
257
257
public:
258
+ EthernetServer () : _port(80 ) { }
258
259
EthernetServer (uint16_t port) : _port(port) { }
259
260
EthernetClient available ();
260
261
EthernetClient accept ();
261
262
virtual void begin ();
263
+ void begin (uint16_t port);
264
+ void end (uint16_t timeout = 5000 );
262
265
virtual size_t write (uint8_t );
263
266
virtual size_t write (const uint8_t *buf, size_t size);
264
267
virtual operator bool ();
Original file line number Diff line number Diff line change @@ -37,6 +37,43 @@ void EthernetServer::begin()
37
37
}
38
38
}
39
39
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
+
40
77
EthernetClient EthernetServer::available ()
41
78
{
42
79
bool listening = false ;
You can’t perform that action at this time.
0 commit comments