python - socket - no se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión
Errno 10061: No se pudo establecer conexión porque la máquina de destino la rechazó activamente(cliente-servidor) (6)
10061 es WSAECONNREFUSED, ''connection refused'', lo que significa que no había nada escuchando en el IP: puerto al que intentó conectarse.
Hubo un producto de firewall alrededor del año 2000 que emitió rechazos en lugar de ignorar las conexiones entrantes a los puertos bloqueados, pero esto fue rápidamente reconocido como una filtración de información a los atacantes y corregido o retirado.
Tengo un problema con estos códigos de cliente y servidor, sigo obteniendo el [Errno 10061] No se pudo establecer ninguna conexión porque el equipo objetivo lo rechazó activamente
Estoy ejecutando el servidor en una máquina virtual con Windows XP SP3 y el cliente en Windows 7 64 bits, mi versión de Python es 2.7.3. Lo que quiero saber es cómo debería editar el código para usar el cliente y el servidor en diferentes redes. ¡Gracias!
servidor:
#!/usr/bin/python # This is server.py file
import socket # Import socket module
s = socket.socket() # Create a socket object
host = ''0.0.0.0'' # Get local machine name
port = 12345 # Reserve a port for your service.
print ''Server started!''
print ''Waiting for clients...''
s.bind((host, port)) # Bind to the port
s.listen(5) # Now wait for client connection.
c, addr = s.accept() # Establish connection with client.
print ''Got connection from'', addr
while True:
msg = c.recv(1024)
print addr, '' >> '', msg
msg = raw_input(''SERVER >> '')
c.send(msg);
#c.close() # Close the connection
cliente:
#!/usr/bin/python # This is client.py file
import socket # Import socket module
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345 # Reserve a port for your service.
print ''Connecting to '', host, port
s.connect((host, port))
while True:
msg = raw_input(''CLIENT >> '')
s.send(msg)
msg = s.recv(1024)
print ''SERVER >> '', msg
#s.close # Close the socket when done
PD: el código es de internet.
La solución es usar el mismo número de IP y puerto tanto en el cliente como en el servidor. Intente, en el cliente, usar TCP_IP = ''escriba el número de IP aquí'' TCP_PORT = escriba el número de puerto aquí en la conexión ((TCP_IP, TCP_PORT))
Sugerencia: el actively refused
suena como un problema técnico algo más profundo, pero ...
... en realidad, esta respuesta (y también específicamente errno:10061
) también se da, si uno llama al ejecutable bin / mongo y el servicio mongodb simplemente no se ejecuta en la máquina objetivo. Esto incluso se aplica a las instancias de máquinas locales (todas sucediendo en localhost).
➪ Siempre descarte esta posibilidad trivial , es decir, simplemente usando el cliente de la línea de comando para acceder a su db.
Usando los ejemplos de: https://docs.python.org/3.2/library/socketserver.html Decidí que necesitaba configurar el puerto HOST en la máquina en la que tenía el programa del servidor ejecutándose. Entonces TCPServer en 192.168.0.1 HOST = TCPServer IP 192.168.0.1 luego tuve que configurar el lado de TCPClient para apuntar a la IP de TCPServer. Entonces el valor de TCPClient HOST = 192.168.0.1 - Disculpa, es lo mejor que puedo describir.
la solución a corto plazo es usar el host iis predeterminado y el puerto normalmente 120.0.0.1 y 80, respectivamente. Sin embargo, todavía estoy buscando una solución más versátil.
si tiene un servidor remoto instalado en su máquina. dar el host server.py como "localhost" y el número de puerto. luego del lado del cliente, debe dar ip 127.0.0.1 local y número de puerto. entonces su trabajo