Citar
Pero mi pregunta es con que puedo seguir ahora?
Puedes hacer lo que quieras. ¿Que quieres hacer? Puedes hacer desde una red de conexiones hasta un backdoor. ¿Que quieres hacer con ello?Si quieres aprender a hacer conexiones sockets. Unicamente no te limites a seguir tutoriales. Esta bien para aprender los fundamentos. Pero aprenderás más cuando te pongas una meta y hagas un proyecto (no hace falta grande) que conlleve esto.
Te recomiendo que en la funcion bind() el string este vacio, ya que esta escuchando conexiones.
Código
mi_socket = socket.socket() mi_socket.bind(('',8000 )) mi_socket.listen(5)
A no ser que quiera que escuche hacia una IP especifica.
Además estas creando un objeto socket.socket(), cuando creas un funcion socket sin parametros, por defecto estas creando un socket con paquetes TCP/IP y IPv4
Código
El primer parametro especifica el tipo de familia (IPv4, IPv6) y el segundo el tipo de paquete (TCP/UDP). Mira la documentación oficial
mi_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Doc: https://docs.python.org/3/library/socket.html?highlight=socket#socket.socket
Además. Estas trabajando en localhost? Si es así en el servidor cambia el:
Código
a
mi_socket.bind(('192.168.1.31',8000 ))
Código
mi_socket.bind(('',8000 ))
y en el cliente:
Código
a
mi_socket.connect(('192.168.1.31', 8000))
Código
recuerda que 127.0.0.1/localhost es el loopback en IPv4 y en IPv6 es ::1
mi_socket.connect(('127.0.0.1', 8000))
He probado tu código y va bién. Unicamente es que en el lado del servidor cuando muestras el mensaje, se muestra en b'[texto]'.
Código
, reemplaza la linea a:
print(repuesta1) #output: b'Hola, te saludo desde el servidor!'
Código
print(repuesta1.decode()) #output: Hola, te saludo desde el servidor!
Ejemplo de conexion socket
Server:
Código
#!/usr/bin/python3 import socket, sys mi_socket = socket.socket() mi_socket.bind(('',8000 )) mi_socket.listen(5) while True: try: conexion, addr = mi_socket.accept() print ("Nueva conexion establecida!") print(addr) while True: respuesta1 = conexion.recv(1024) if respuesta1.decode() == "close": print("closing server....") mi_socket.close() sys.exit() else: print(respuesta1.decode()) except KeyboardInterrupt: # presiona Ctrl+C print("\nclosing server....") break mi_socket.close() sys.exit()
client:
Código
#!/usr/bin/python3 import socket mi_socket = socket.socket() mi_socket.connect (('127.0.0.1', 8000)) MensajeCliente = "Hola, te saludo desde el cliente!" mi_socket.send(MensajeCliente.encode()) while True: prompt = input("> ") if prompt == "close": print("closing client...") mi_socket.send(b"close") break elif prompt != "": mi_socket.send(prompt.encode()) mi_socket.close()
Esta conexion, te permite enviar mensajes, y en el lado del servidor los imprime, además si le envias la palabra "close", el servidor al recibir cuya palabra, envia al cliente GoodBye, y cierra el server. Y cuando el cliente recibe el GoodBye este se cierra. Además si hacer Ctrl+C en el script del servidor, este se cierra.