SocketsBasicoPython#
Definición del socket servidor#
La función socket.socket() se utiliza para crear el objeto socket, y toma dos argumentos: el dominio de dirección y el tipo de socket.
socket.AF_INET: Especifica el dominio de dirección del socket. AF_INET indica que se utilizará el protocolo de direcciones IPv4. Si quisieras utilizar el protocolo de direcciones IPv6, usarías AF_INET6.
socket.SOCK_STREAM: Especifica el tipo de socket. SOCK_STREAM indica que se utilizará un socket orientado a la conexión, que en este caso es TCP. Si quisieras crear un socket UDP, usarías SOCK_DGRAM.
import socket
def main():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Este es el objeto que define el socket de tipo TCP
server_socket.bind(('localhost', 12345)) # El método bind() del objeto socket toma como argumento una tupla que contiene
# la dirección IP y el número de puerto a los que se debe enlazar el socket
server_socket.listen(1) # El método listen() es esencial en un servidor TCP, ya que configura el socket para que acepte
# conexiones entrantes. El número 1 es para que solo acepte una conexión al tiempo.
print("Servidor escuchando en el puerto 12345...")
client_socket, client_address = server_socket.accept() # El método accept() bloquea la ejecución del programa hasta que
# se establezca una conexión entrante, y luego devuelve un nuevo
# objeto socket que representa la conexión con el cliente. Este método
# aquí está retornando la dirección IP de la conexión y el socket cliente
print(f"Conexión entrante desde {client_address}")
message = client_socket.recv(1024).decode('utf-8') # recibe hasta 1024 bytes de datos del socket, y luego decodifica estos
# datos como una cadena de caracteres utilizando la codificación 'utf-8'.
print(f"Mensaje recibido del cliente: {message}")
client_socket.send("Mensaje recibido por el servidor.".encode('utf-8')) # Envía hasta 1024 bytes de datos del socket,
# pero los codifica en 'utf-8'
client_socket.close() # Se cierra el socket cliente
server_socket.close() # Se cierra el socket servidor
if __name__ == "__main__":
main()
Definición del socket cliente#
import socket
def main():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 12345)) # Método para conectarse al socket en la IP:puerto especificado.
client_socket.send("Hola, servidor!".encode('utf-8'))
response = client_socket.recv(1024).decode('utf-8')
print(f"Respuesta del servidor: {response}")
client_socket.close()
if __name__ == "__main__":
main()