Skip to content

Commit e3903c9

Browse files
committed
socket: Allow connect() & bind() to take standard tuple of (host, port).
1 parent 36c802c commit e3903c9

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

socket/socket.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@
77
IP_ADD_MEMBERSHIP = 35
88
IP_DROP_MEMBERSHIP = 36
99

10+
def _resolve_addr(addr):
11+
if isinstance(addr, bytes):
12+
return addr
13+
if len(addr) != 2:
14+
raise NotImplementedError("Only IPv4 supported")
15+
a = getaddrinfo(addr[0], addr[1], _socket.AF_INET)
16+
return a[0][4]
1017

1118
def inet_aton(addr):
1219
return inet_pton(AF_INET, addr)
@@ -26,5 +33,11 @@ def create_connection(addr, timeout=None, source_address=None):
2633

2734
class socket(_socket.socket):
2835

36+
def bind(self, addr):
37+
return super().bind(_resolve_addr(addr))
38+
39+
def connect(self, addr):
40+
return super().connect(_resolve_addr(addr))
41+
2942
def sendall(self, *args):
3043
return self.send(*args)

0 commit comments

Comments
 (0)