Ejemplo de socket de cliente Python básico

He estado tratando de comprender cómo funcionan los sockets, y he estado tratando de desentrañar un código de muestra que encontré en esta página para un progtwig de socket de cliente muy simple. Como se trata de un código de ejemplo básico, asumí que no tenía errores, pero cuando bash comstackrlo, aparece el siguiente mensaje de error.

Archivo “client.py”, línea 4, en client_socket.connect ((” localhost ‘, 5000)) Archivo “”, línea 1, en conectar socket.error: [Errno 111] Conexión rechazada

He buscado en Google casi todas las partes de este error, y parece que a las personas que han tenido problemas similares se les ha ayudado cambiando el número de puerto, usando ‘conectar’ en lugar de ‘enlazar’ y algunas otras cosas, pero ninguna de Se aplican a mi situación. Cualquier ayuda es muy apreciada, ya que soy muy nuevo en la progtwigción en red y bastante nuevo en Python.

Por cierto, aquí está el código en caso de que el enlace no funcione por el motivo que sea.

#client example import socket client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect(('localhost', 5000)) while 1: data = client_socket.recv(512) if ( data == 'q' or data == 'Q'): client_socket.close() break; else: print "RECIEVED:" , data data = raw_input ( "SEND( TYPE q or Q to Quit):" ) if (data  'Q' and data  'q'): client_socket.send(data) else: client_socket.send(data) client_socket.close() break; 

Está intentando conectarse a la computadora que se está ejecutando en el puerto 5000, pero se está rechazando la conexión. ¿Estás seguro de que tienes un servidor en ejecución?

Si no, puedes usar netcat para probar:

 nc -l -k -p 5000 

Algunas implementaciones pueden requerir que omita la -p .

Aquí está el ejemplo más simple de socket python.

Lado del servidor:

 import socket serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serversocket.bind(('localhost', 8089)) serversocket.listen(5) # become a server socket, maximum 5 connections while True: connection, address = serversocket.accept() buf = connection.recv(64) if len(buf) > 0: print buf break 

Lado del cliente:

 import socket clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) clientsocket.connect(('localhost', 8089)) clientsocket.send('hello') 
  • Primero ejecute el SocketServer.py, y asegúrese de que el servidor esté listo para escuchar / recibir algo
  • Luego el cliente envía información al servidor;
  • Después de que el servidor recibió algo, termina

Aquí hay un progtwig de socket bastante simple. Esto es casi tan simple como obtener sockets.

para el progtwig cliente (CPU 1)

 import socket s = socket.socket() host = '111.111.0.11' # needs to be in quote port = 1247 s.connect((host, port)) print s.recv(1024) inpt = raw_input('type anything and click enter... ') s.send(inpt) print "the message has been sent" 

Debe reemplazar el 111.111.0.11 en la línea 4 con el número de IP que se encuentra en la configuración de red de la segunda computadora.

Para el progtwig servidor (CPU 2)

 import socket s = socket.socket() host = socket.gethostname() port = 1247 s.bind((host,port)) s.listen(5) while True: c, addr = s.accept() print("Connection accepted from " + repr(addr[1])) c.send("Server approved connection\n") print repr(addr[1]) + ": " + c.recv(1026) c.close() 

Ejecute el progtwig servidor y luego el cliente.

Parece que su cliente está intentando conectarse a un servidor inexistente. En una ventana de shell, ejecute:

 $ nc -l 5000 

antes de ejecutar su código Python. Actuará como un servidor que escucha en el puerto 5000 para que se conecte. Luego, puede jugar escribiendo en su ventana de Python y verla aparecer en el otro terminal y viceversa.

Podrías estar confundiendo la comstackción de la ejecución. Python no tiene paso de comstackción! 🙂 Tan pronto como escribe python myprogram.py el progtwig se ejecuta y, en su caso, intenta conectarse a un puerto abierto 5000, dando un error si ningún progtwig del servidor está escuchando allí. Parece que estás familiarizado con los lenguajes de dos pasos, que requieren comstackción para producir un ejecutable, y por lo tanto estás confundiendo la comstackción en tiempo de ejecución de Python de que “¡No puedo encontrar a nadie escuchando en el puerto 5000!” Con un error de comstackción. Pero, de hecho, tu código Python está bien; ¡Solo necesitas que aparezca un oyente antes de ejecutarlo!