11from dataclasses import dataclass
22import time
33import socket
4+ import sys
45
56
67BROADCAST_PORT = 6470
7- DISCOVERY_TIMEOUT = 10
8-
8+ DISCOVERY_TIMEOUT_SEC = 10
99
1010@dataclass
1111class DeviceInfo :
@@ -15,10 +15,11 @@ class DeviceInfo:
1515 name : str
1616 serial : str
1717
18-
19- def discover_iter (socket_timeout_sec = 1 , discovery_timeout_sec = DISCOVERY_TIMEOUT ):
18+ def discover_iter (socket_timeout_sec = 1 , discovery_timeout_sec = DISCOVERY_TIMEOUT_SEC ):
2019 sock = socket .socket (socket .AF_INET , socket .SOCK_DGRAM )
2120 sock .setsockopt (socket .SOL_SOCKET , socket .SO_REUSEADDR , 1 )
21+ if sys .platform != 'win32' :
22+ sock .setsockopt (socket .SOL_SOCKET , socket .SO_REUSEPORT , 1 )
2223 sock .settimeout (socket_timeout_sec )
2324 sock .bind (("" , BROADCAST_PORT ))
2425
@@ -28,7 +29,7 @@ def discover_iter(socket_timeout_sec=1, discovery_timeout_sec=DISCOVERY_TIMEOUT)
2829
2930 while True :
3031 now = time .time ()
31- if now - start_time > DISCOVERY_TIMEOUT :
32+ if now - start_time > discovery_timeout_sec :
3233 break
3334 try :
3435 data , server = sock .recvfrom (1024 )
@@ -50,5 +51,5 @@ def discover_iter(socket_timeout_sec=1, discovery_timeout_sec=DISCOVERY_TIMEOUT)
5051 sock .close ()
5152
5253
53- def discover (timeout_sec = DISCOVERY_TIMEOUT ):
54+ def discover (timeout_sec = DISCOVERY_TIMEOUT_SEC ):
5455 return list (discover_iter (timeout_sec ))
0 commit comments