You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.1 KiB
39 lines
1.1 KiB
import socketserver
|
|
|
|
class TCPStreamHandler(socketserver.StreamRequestHandler):
|
|
#Clase para manejar las conexiones, se instancia una por cliente
|
|
#transmisión de datos por stream
|
|
|
|
def handle(self):
|
|
# self.rfile es un stream de lectura
|
|
# self.wfile es un stream de escritura
|
|
print (f"Se han conectado desde: {self.client_address[0]} [{self.client_address[1]}]")
|
|
while True:
|
|
self.data = self.rfile.readline().strip()
|
|
print("Datos recibidos: ", self.data)
|
|
#remitimos los mismos datos en mayúscula
|
|
self.wfile.write(self.data.upper())
|
|
#self.wfile.writelines((b"uno", b"dos",b"tres"))
|
|
if self.data == b"":
|
|
break
|
|
if self.data ==b"#":
|
|
raise KeyboardInterrupt
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
HOST, PORT = "", 2000
|
|
|
|
# instanciamos el socket servidor con la clase asociada de callback
|
|
server = socketserver.TCPServer((HOST, PORT), TCPStreamHandler)
|
|
|
|
# activamos el servidor (ponemos a la escucha)
|
|
# podomos porvocar una excepción con Ctrl-C
|
|
try:
|
|
server.serve_forever()
|
|
except KeyboardInterrupt:
|
|
print ("servidor finalizado")
|
|
|
|
|
|
|