Programação de Sockets em Python

PythonBeginner
Pratique Agora

Introdução

Neste laboratório, exploraremos o mundo da programação de sockets em Python, ambientado no cenário mágico de um vibrante carnaval e com a presença do personagem fantasioso de um artista de balões. O carnaval está repleto de emoção e energia, e o artista de balões encanta o público com suas criações espetaculares. O objetivo deste laboratório é mergulhar no reino da programação de sockets e tecer nossas próprias conexões de rede mágicas, assim como as criações hipnotizantes de balões no carnaval.

Estabelecendo Comunicação Cliente-Servidor Básica

Nesta etapa, criaremos uma conexão cliente-servidor simples usando a programação de sockets em Python. O cliente e o servidor se comunicarão e trocarão dados em uma interação básica.

  1. Abra um novo arquivo Python chamado server.py no diretório ~/project.
  2. Implemente o código do lado do servidor em server.py.
## server.py
import socket

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('127.0.0.1', 8888))
server_socket.listen(1)

connection, address = server_socket.accept()
with connection:
    print('Connected by', address)
    while True:
        data = connection.recv(1024)
        if not data:
            break
        connection.sendall(data)
  1. Abra outro arquivo Python chamado client.py no diretório ~/project.
  2. Implemente o código do lado do cliente em client.py.
## client.py
import socket

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('127.0.0.1', 8888))
client_socket.sendall(b'Hello, server')
data = client_socket.recv(1024)
print('Received', repr(data))

Execute esses dois arquivos ao mesmo tempo e clique em "Split Terminal" para conseguir isso. As informações abaixo devem ser exibidas no seu terminal:

labex:project/ $ python server.py
Connected by ('127.0.0.1', 40082)
labex:project/ $ python client.py
Received b'Hello, server'

Aprimorando a Serialização de Dados para Comunicação

Nesta etapa, aprimoraremos a comunicação entre o cliente e o servidor serializando e deserializando dados para transmissão.

  1. Modifique o código server.py para incluir a serialização e deserialização de dados.
## server.py
import socket
import pickle

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('127.0.0.1', 8888))
server_socket.listen(1)

connection, address = server_socket.accept()
with connection:
    print('Connected by', address)
    while True:
        data = connection.recv(1024)
        if not data:
            break
        deserialized_data = pickle.loads(data)
        processed_data = deserialized_data.upper()
        connection.sendall(processed_data.encode())
  1. Modifique o código client.py para incluir a serialização e deserialização de dados.
## client.py
import socket
import pickle

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('127.0.0.1', 8888))
data_to_send = pickle.dumps('Hello, server')
client_socket.sendall(data_to_send)
received_data = client_socket.recv(1024)
print('Received', received_data.decode())

Execute esses dois arquivos ao mesmo tempo e clique em "Split Terminal" para conseguir isso. As informações abaixo devem ser exibidas no seu terminal:

labex:project/ $ python server.py
Connected by ('127.0.0.1', 40082)
labex:project/ $ python client.py
Received HELLO, SERVER

Resumo

Neste laboratório, mergulhamos no reino encantador da programação de sockets em Python, inspirados na atmosfera mágica do carnaval e nas criações fantásticas do artista de balões. Ao guiá-lo pelos passos de criação de conexões cliente-servidor, aprimorando a comunicação com a serialização de dados e muito mais, nosso objetivo foi fornecer uma experiência imersiva e educativa, capacitando-o a dominar a arte da programação de sockets e a se deleitar com as maravilhosas conexões que eles podem tecer.