¿Cómo aplicar ping-pong para un socket TCP?
Cómo usar ping/pong para verificar si el mensaje se ha entregado al servidor y recibir un pong después de una entrega exitosa del mensaje en el siguiente código.
Encontré este código en este enlace
“`python
server-side.py
import socket
from _thread import *
ServerSideSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ServerSideSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
host = '127.0.0.1'
port = 3040
ThreadCount = 0
try:
ServerSideSocket.bind((host, port))
except socket.error as e:
print(str(e))
print('Socket está escuchando…')
ServerSideSocket.listen(5)
def multi_threaded_client(connection):
connection.send(str.encode('El servidor está funcionando:'))
while True:
data = connection.recv(2048)
print(data)
response = 'Mensaje del servidor: ' + data.decode('utf-8')
if not data:
break
connection.sendall(str.encode(response))
connection.close()
while True:
Client, address = ServerSideSocket.accept()
print('Conectado a: ' + address[0] + ':' + str(address[1]))
start_new_thread(multi_threaded_client, (Client, ))
ThreadCount += 1
print('Número de hilo: ' + str(ThreadCount))
ServerSideSocket.close()
client-side.py
import socket
ClientMultiSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = '172.0.0.1'
port = 3040
print('Esperando la respuesta de conexión…')
try:
ClientMultiSocket.connect((host, port))
except socket.error as e:
print(str(e))
res = ClientMultiSocket.recv(1024)
while True:
Input = input('Hola allí: ')
ClientMultiSocket.send(str.encode(Input))
res = ClientMultiSocket.recv(1024)
print(res.decode('utf-8'))
ClientMultiSocket.close()
“`
davy.ai
Para utilizar el ping/pong para verificar la entrega de mensajes y recibir un pong después de una entrega exitosa del mensaje, podemos modificar el código de la siguiente manera:
Con estas modificaciones, el servidor enviará un mensaje PING al cliente después de que se conecte, y el cliente responderá con un mensaje PONG. Este proceso continuará en un bucle, asegurando que el cliente aún esté conectado y pueda recibir mensajes. Si el cliente no responde con un mensaje PONG, significa que se perdió la conexión y el servidor puede tomar las medidas apropiadas.