Buscar

Sockets - TCP e UDP

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

UNIVERSIDADE FEDERAL DO CEARÁ 
CAMPUS QUIXADÁ 
CURSO DE GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO 
 
 
 
 
 
 
 
 
 
 
 
 
SARAH FERREIRA DA SILVA 
 
RELATÓRIO 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
QUIXADÁ 
2021 
1. INTRODUÇÃO 
 
Quando dois computadores necessitam manter uma conexão, cada um deles utiliza uma 
porta para se comunicar entre si: os sockets. Na programação de sockets, vemos como 
estabelecer esta comunicação. Utilizamos a ferramenta Wireshark para análise do tráfego 
de rede estabelecido. 
Precisamos notar que em uma comunicação, o cliente iniciará o contato com o servidor, 
portanto é necessário que o mesmo esteja ativo e tenha uma porta dedicada ao respectivo 
cliente. 
Há dois tipos de sockets: UDP e TCP. Os sockets UDP não garantem a ordem ou 
integridade dos dados, porém são mais velozes que o TCP, que fornece uma alta 
confiabilidade. 
 
2. DESENVOLVIMENTO 
 
2.1 Interações cliente/servidor usando o TCP 
 
O socket TCP no cliente começa uma apresentação de três vias, estabelecendo conexão 
com o servidor que está ativo e aguardando contato. Essa apresentação é transparente à 
ambos. O servidor TCP que nota o contato do cliente cria um socket dedicado ao mesmo. O 
servidor TCP pode conversar com múltiplos clientes. 
 
Implementação em Python - Cliente TCP 
 
import socket 
 
IP_Servidor = '192.168.1.6' 
PORTA_Servidor = 5000 
 
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
DESTINO = (IP_Servidor, PORTA_Servidor) 
client.connect(DESTINO) 
client.send('Eu sou o cliente, estou me conectando ao servidor!') 
response = client.recv(4096) 
print(response) 
 
Implementação em Python - Servidor TCP 
 
import socket 
import threading 
 
HOST = '' 
PORT = 5000 
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
orig = (HOST, PORT) 
server.bind(orig) 
server.listen(1) 
print '[*] Escutando %s: %d' %orig 
 
def handle_client(client_socket): 
msg = client_socket.recv(1024) 
print '[*] Recebido: %s' %msg 
print '\n----------------------------\n' 
client_socket.send('\nMensagem destinada ao cliente: %s\n' %addr[0]) 
client_socket.send('\n ACK! \nRecebido pelo servidor\n') 
client_socket.close() 
while True: 
 client, addr = server.accept() 
 print '[*] Conexao aceita de: %s:%d' %(addr[0], addr[1]) 
 client_handler = threading.Thread(target=handle_client, args=(client,)) 
 client_handler.start() 
 
 
2.2 Interações cliente/servidor usando o UDP 
 
Aqui não há conexão entre o cliente e o servidor e nem apresentação. Os dados são 
transmitidos fora de ordem e podem ser perdidos. É indicado para fluxos de dados em 
tempo real. 
 
Implementação em Python - Cliente UDP 
 
import socket 
 
IP_Servidor = '192.168.1.6' 
PORTA_Servidor = 6000 
 
udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
DESTINO = (IP_Servidor, PORTA_Servidor) 
Mensagem = raw_input() 
udp.sendto (Mensagem, DESTINO) 
udp.close() 
 
Implementação em Python - Servidor UDP 
 
import socket 
 
MEU_IP = '' 
MINHA_PORTA = 6000 
 
udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
MEU_SERVIDOR = (MEU_IP, MINHA_PORTA) 
udp.bind(MEU_SERVIDOR) 
Mensagem_Recebida, END_cliente = udp.recvfrom(1024) 
print 'Recebi = ',Mensagem_Recebida,' , Do cliente', END_cliente 
udp.close()

Continue navegando