Недавно я написал код для небольшой программы чата в Python. Сокеты прекрасно соединяются при подключении их с разных терминалов в одной и той же системе. Но то же самое не происходит, когда я подключаю их с разных компьютеров, которые подключены через одну и ту же сеть Wi-Fi.Невозможно подключить сокеты Python на разных компьютерах
Вот код сервера:
#!/usr/bin/env python
print "-"*60
print "WELCOME TO DYNASOCKET"
print "-"*60
import socket, os, sys, select
host = "192.168.1.101"
port = 8888
connlist = []
try:
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print "Socket Successfully Created."
connlist.append(s)
s.bind((host,port))
print "Socket Successfully Binded."
s.listen(10)
print "Socket is Now Listening."
except Exception, e:
print "Error : " + str(e)
sys.exit()
def air(sock,message):
for socket in connlist:
if socket != sock and socket != s:
try:
socket.sendall(message)
except:
connlist.remove(socket)
while 1:
read_sockets,write_sockets,error_sockets = select.select(connlist,[],[])
for sock in read_sockets:
if sock == s:
conn, addr = s.accept()
connlist.append(conn)
print "Connected With " + addr[0] + " : " + str(addr[1])
else:
try:
key = conn.recv(1024)
print "<" + str(addr[1]) + ">" + key
data = raw_input("Server : ")
conn.sendall(data + "\n")
air(sock, "<" + str(sock.getpeername()) + ">" + key)
except:
connlist.remove(sock)
print "Connection Lost With : " + str(addr[1])
conn.close()
s.close()
Вот клиентский скрипт:
#!/usr/bin/env python
print "-"*60
print "WELCOME TO DYNASOCKET"
print "-"*60
import socket, os, sys
host = "192.168.1.101"
port = 8888
try:
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print "Socket Successfully Created."
s.connect((host,port))
print "Connected With " + host + " : " + str(port)
except socket.error, e:
print "Error : " + str(e)
while 1:
reply = raw_input("Client : ")
s.send(reply)
message = s.recv(1024)
print "Server : " + message
s.close()
Когда я пытаюсь соединить клиента с другого компьютера, я получаю эту ошибку:
Error : [Errno 10060] A Connection attempt failed because the connected party
did not respond after a period of time, or established connection failed
because connected host has failed to respnd.
Не очень специфичны для питона. Вы уверены, что брандмауэр блокирует трафик? – Cld
Часто возникающие проблемы возникают из-за того, что маршрутизатор не маршрутизирует определенные (большинство) портов, как вы ожидали. Если вы установите номер порта на 80 (порт HTTP) и повторите попытку, он все еще не работает? Я также предполагаю, что вы запустили сервер на указанном здесь компьютере «хозяин» и не пытаетесь подключить клиента к неправильному адресу. – Anthony
Я не думаю, что брандмауэр блокирует любой трафик. Также я попытался изменить порт на 80. Но он по-прежнему отображает ту же ошибку. :( –