Зависает на методе socket.accept
При попытке принять подключение с помощью через accept, программа зависает (останавливается) на этом методе и не идет дальше:
def wait():
sock = socket.socket()
sock.bind( ("localhost", 9091) )
sock.listen(5)
print 'sock.accept'
conn, addr = sock.accept()
print 'sock.accepted'
conn.settimeout(60) # для длительного ожидания данных
while True:
data = conn.recv(1024)
if not data:
break
print str(data)
conn.send(buffer('recivied '+str(len(data))))
# data = conn.recv(1024)
# udata = data.decode("utf-8")
print str(data)
conn.close()
На выходе получаю в консоли только 'sock.accept'. Breakpoint тоже дальше не идет.
Сколько не смотрел в интернете (включая оф доки), во всех примерах код примерно идентичный. Но у меня не работает. В чем может быть причина?
Update:
После запуска первого скрипта (тот код что выше), запускаю "клиента":
import socket
sock = socket.socket()
sock.bind( ("localhost", 9091) )
sock.listen(5)
print 5
conn, addr = sock.accept()
print 6
conn.send(b"Hello!\n")
conn.close()
Но клиент на строке sock.bind( ("localhost", 9091) ) валится с ошибкой socket.error: [Errno 10048] Обычно разрешается только одно использование адреса сокета (протокол/сетевой адрес/порт).
Погуглив, я обнаружил, что эта ошибка возникает, когда порт занят другим процессом. Одновременно проверяю через netstat -aon | findstr :9091 до и после запуска прослушивающего (первого скрипта), я обнаруживаю, что 9091 занят именно им (что логично), т.к. прослушка начинается после его запуска.
TCP 127.0.0.1:9091 0.0.0.0:0 LISTENING
7256