Skip to content

guiffranco/Python-Server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python Server

Simple socket server in Python

Etapa 1

Para esta etapa, foi implementado um protocolo onde:

  • O cliente deseja enviar uma mensagem ao servidor. O cliente deve informar ao servidor o tamanho da mensagem que deseja-se enviar. Logo após o envio desta informação, o cliente envia a mensagem e aguarda uma resposta de recebimento do servidor.
  • O servidor por sua vez aguarda uma primeira mensagem que deve conter o tamanho da "mensagem real" que o cliente deseja enviar. Ao receber estes dados o servidor se prepara para receber esta mensagem. Ele verifica se todos os dados foram recebidos, e caso obtenha sucesso, envia uma mensagem de confirmação ao cliente.

Para testar, rodar o script do servidor em um terminal:

   cd etapa1
   python3 serv.py

Em outro terminal, rodar o script do client:

   cd etapa1/
   python3 cli.py

O código do cliente permite que seja enviado um arquivo .txt. Para facilitar o teste de envio de grandes quantidades de dados, o diretório da etapa já contém um arquivo chamado "input.txt", que contém 16385 bytes em caracteres "A".

Etapa 2

Para esta etapa foi implementado, sobre um código básico disponibilizado pelo professor Paulo Matias, características de um TCP, como os Handshakes inicial e final, transmissão correta de segmentos, controle de congestionamento e retransmissão após timeout.

Para rodar o script em um terminal:

    cd etapa2/
    python3 serv.py

Em outro terminal, rodar o script:

wget localhost:7000

Gerando, ao fim, um arquivo index.html com a mensagem enviada ao cliente.

Etapa 3

Para esta etapa foi implementado, sobre um exemplo disponibilizado pelo professor Paulo Matias, a interpretação de cabeçalho IP e a reconstrução de datagramas IP fragmentados (mesmo com os fragmentos chegando fora de ordem), assim como o timeout sobre esses datagramas (caso os fragmentos não se completem dentro de determinado tempo).

Inicialmente, pegue o ip do seu router:

    ip route

Substitua-o na variável "dest_addr" no código host.py, em etapa3/.

Para rodar o script em um terminal:

    cd etapa3/
    python3 host.py

Etapa 4

Para a etapa 4 foram verificados os MAC adresses e IPs da máquina pessoal e do router local. Então, modificou-se este código exemplo disponibilizado pelo professor Paulo Matias, para fazer verificação desses endereços no momento do recebimento do frame.

Por fim, integrou-se o código resultante com o da etapa 3.

Etapa 5

Para a etapa 5 foram juntadas a etapa 4, a qual já estava integrada com a etapa 3, com a etapa 2.

About

Simple socket server in Python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages