Я пытался написать код, где клиент подключается к серверу по номеру порта по умолчанию, затем сервер отправляет клиенту другой номер порта. Теперь клиент подключается к новому номеру порта.socket.error: [Errno 111] при попытке подключения к сокету
Клиент:
import socket
import sys
import os
import signal
import time
s = socket.socket()
s.connect(("127.0.0.1", 6667))
line = s.recv(1024)
if line.strip():
port = int(line)
s.close()
soc = socket.socket()
soc.connect(("127.0.0.1", port))
print soc.recv(1024)
soc.close()
else:
s.close()
Сервер:
import socket
import sys
import os
import signal
import time
port = 7777
s = socket.socket()
s.bind(("127.0.0.1", 6667))
s.listen(0)
sc, address = s.accept()
print address
sc.send(str(port))
sc.close()
s.close()
sock = socket.socket()
sock.bind(("127.0.0.1", port))
soc, addr = sock.accept()
print addr
soc.send("Success")
soc.close()
sock.close()
Когда я выполняю этот код, я получаю следующие ошибки на стороне клиента и на стороне сервера.
Сервер:
('127.0.0.1', 36282)
Traceback (most recent call last):
File "server.py", line 17, in <module>
soc, addr = sock.accept()
File "/usr/lib/python2.7/socket.py", line 202, in accept
sock, addr = self._sock.accept()
socket.error: [Errno 22] Invalid argument
Клиент:
Traceback (most recent call last):
File "client.py", line 13, in <module>
soc.connect(("127.0.0.1", port))
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 111] Connection refused
Может кто-нибудь объяснить мне причину этих ошибок и обеспечить решение этих ошибок.
Похоже, вам не хватает 'sock.listen (0)' после вашего звонка на 'sock.bind ((« 127.0.0.1 », порт)). Также подумайте, что произойдет, если ваш клиент отправит номер порта (и попытается подключиться), прежде чем сервер начнет прослушивать подключения. –
^работа для меня. Смотрите также ваши имена переменных ... 's',' sc', 'sock' ... особенно если вы разместите его здесь. – wenzul
@MichaelPetch: Почему бы не сделать это aswer? – alk