Allow faster reuse of socket, to be able to restart WifiServer. (#4306)
See #3960 for more details of the problem and the solution. I only implemented what was proposed in this ticket, as it solves my problem, which was the same as in this ticket. Credits for the code going to @etrinh ;-) This also is a more consistence behaviour compared to esp8266, where it also is possible to restart the wifiserver immediately on the same port.
This commit is contained in:
		
							parent
							
								
									dd1a15478f
								
							
						
					
					
						commit
						c6a8da61f7
					
				| @ -63,6 +63,10 @@ WiFiClient WiFiServer::available(){ | ||||
| } | ||||
| 
 | ||||
| void WiFiServer::begin(uint16_t port){ | ||||
|     begin(port, 1); | ||||
| } | ||||
| 
 | ||||
| void WiFiServer::begin(uint16_t port, int enable){ | ||||
|   if(_listening) | ||||
|     return; | ||||
|   if(port){ | ||||
| @ -72,6 +76,7 @@ void WiFiServer::begin(uint16_t port){ | ||||
|   sockfd = socket(AF_INET , SOCK_STREAM, 0); | ||||
|   if (sockfd < 0) | ||||
|     return; | ||||
|   setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(int)); | ||||
|   server.sin_family = AF_INET; | ||||
|   server.sin_addr.s_addr = INADDR_ANY; | ||||
|   server.sin_port = htons(_port); | ||||
|  | ||||
| @ -40,6 +40,7 @@ class WiFiServer : public Server { | ||||
|     WiFiClient available(); | ||||
|     WiFiClient accept(){return available();} | ||||
|     void begin(uint16_t port=0); | ||||
|     void begin(uint16_t port, int reuse_enable); | ||||
|     void setNoDelay(bool nodelay); | ||||
|     bool getNoDelay(); | ||||
|     bool hasClient(); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user