Estoy tratando de escribir un programa para la transferencia de archivos utilizando sockets. El servidor al final del código está funcionando bien. Sin embargo, en el lado del cliente me sale el siguiente errorPython socket.error: [Errno 111] Conexión rechazada
Traceback (most recent call last):
File "client.py", line 54, in <module>
uploadFiles(directory)
File "client.py", line 36, in uploadFiles
transferFile(fname)
File "client.py", line 13, in transferFile
cs.connect((HOST, 36258))
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 111] Connection refused
Mi código es el siguiente
import os
import socket
def transferFile(fname):
HOST = '127.0.0.1'
CPORT = 36258
MPORT = 36250
FILE = fname
cs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
cs.connect((HOST, 36258))
cs.send("SEND " + FILE)
cs.close()
ms = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ms.connect((HOST, MPORT))
f = open(FILE, "rb")
data = f.read()
f.close()
ms.send(data)
ms.close()
def uploadFiles(directory):
home = os.getenv("HOME")
folder = str(home + "/" + directory)
os.chdir(folder)
dirList = os.listdir(folder)
print dirList
for fname in dirList:
if fname.endswith('.bin'):
transferFile(fname)
os.chdir(os.getenv("HOME"))
directory = "testdownload"
if not os.path.exists(directory):
os.makedirs(directory)
os.chdir(directory)
uploadFiles(directory)
Intenté buscar ayuda en Google y otros cargos en desbordamiento de pila, ninguno de ellos ayudó. ¿Puede alguien ayudarme? Los números de línea pueden ser diferentes ya que pegué solo una parte del código
¿Cómo sabe que el extremo del servidor ¿está trabajando? El mensaje de error sugiere que se rechaza la conexión TCP a 127.0.0.1:36258. ¿Qué sucede cuando ejecuta 'telnet 127.0.0.1 36258'? –
Corrí 'telnet 127.0.0.1 36258' y pude ver la conexión. 'Probar 127.0.0.1 ...' 'Conectado a 127.0.0.1' ' El carácter de escape es '^]'. ' Revisé el extremo del servidor y encontré que había un problema con los enchufes que no se abrían en sincronía con el lado del cliente Gracias – hld619
Para agregar al comentario anterior, agregué un retraso de 2 segundos después de 'cs.close()' y después de 'ms.close()' para sincronizar con las conexiones en el servidor final y funcionó como un encanto. Gracias tc – hld619