Lic.
Roberto Vargas Blacutt
2022
El API de Sockets
● Es una interfaz de programación para la comunicación entre procesos
● Estándar por defecto y base de otras interfaces mas sofisticadas
● Un proceso que desea comunicarse con otro proceso debe crear una
instancia o “instanciar” un socket
● Dos tipos de sockets para dos servicios de transporte
○ UDP – Datagram sockets
○ TCP – Stream sockets
API Sockets Python @Roberto Vargas B. 2
UDP - Interacción cliente/servidor con Python
servidor
Corriendo en miservidor cliente
Socket de Datagrama
crear socket, puerto= x: crear socket:
serverSocket = clientSocket =
• Transporte de datos socket(AF_INET,SOCK_DGRAM) socket(AF_INET,SOCK_DGRAM)
(Datagramas) usando una
comunicación sin conexión Lee datagrama UDP de Crear datagrama con miservidor
serverSocket y puerto=x.
Enviar datagrama a clientSocket
• Cada datagrama es
encaminado individualmente Escribe respuesta a Leer datagrama de
y puede llegar al receptor en serverSocket
Especificando dirección y
clientSocket
cualquier orden puerto del cliente
cerrar
clientSocket
API Sockets Python @Roberto Vargas B. 3
Python - Servidor UDP
# UDP Servidor
from socket import *
serverPort = 9876
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(("localhost", serverPort))
print("Servidor listo para recibir ...")
while 1:
message, clientAddress = serverSocket.recvfrom(2048)
print("Se ha recibido: ", message)
modifiedMessage = message.upper()
serverSocket.sendto(modifiedMessage, clientAddress)
API Sockets Python @Roberto Vargas B. 4
Python – Cliente UDP
# UDP cliente
from socket import *
serverName = "localhost"
serverPort = 9876
clientSocket = socket(AF_INET, SOCK_DGRAM)
message = str.encode(input("Ingrese frase en minusculas:"))
clientSocket.sendto(message, (serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
print(modifiedMessage)
clientSocket.close()
API Sockets Python @Roberto Vargas B. 5
Captura Wireshark - Cliente
API Sockets Python @Roberto Vargas B. 6
Captura Wireshark - Servidor
API Sockets Python @Roberto Vargas B. 7
TCP - Interacción cliente/servidor con Python
servidor
Socket de Flujo Corriendo en miservidor cliente
crea socket, puerto= x para recibir
peticiones
• Transporta un flujo de datos serverSocket = Socket()
sobre una conexión lógica
entre emisor y receptor Espera recibir conexiones
connectionSocket =
Establece conexión crea socket y conexión a
miservdor, puerto=x
serverSocket.accept() clientSocket = socket()
TCP
• Garantiza que los datos se Lee solicitud de Envía petición usando
reciban en el mismo orden connectionSocke clientSocket
en que fueron enviados t
Escribe respuesta a
connectionSocket Lee repuesta de
clientSocket
cierra connectionSocket
cierra clientSocket
API Sockets Python @Roberto Vargas B. 8
Python - Servidor TCP
# TCP Servidor
from socket import *
serverPort = 12000
serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind(("localhost",serverPort))
serverSocket.listen(1)
print ("El servidor esta listo para recibir")
while 1:
connectionSocket, addr = serverSocket.accept()
sentence = connectionSocket.recv(1024)
print("Se ha recibido: ", sentence)
capitalizedSentence = sentence.upper()
connectionSocket.send(capitalizedSentence)
connectionSocket.close()
API Sockets Python @Roberto Vargas B. 9
Python - Cliente TCP
# TCP Cliente
from socket import *
serverName = "localhost"
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName,serverPort))
sentence = str.encode(input("Ingrese frase en minusculas: "))
clientSocket.send(sentence)
modifiedSentence = clientSocket.recv(1024)
print ("Desde el Servidor: ", modifiedSentence)
clientSocket.close()
API Sockets Python @Roberto Vargas B. 10
Captura Wireshark - Cliente
API Sockets Python @Roberto Vargas B. 11
Captura Wireshark - Servidor
API Sockets Python @Roberto Vargas B. 12
Fin
Tema 2
Que debo preparar para la siguiente clase?
Primer Examen Parcial
API Sockets Python @Roberto Vargas B. 13