Baixe o app para aproveitar ainda mais
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()
Compartilhar