Aplicativo de transferência de arquivo em C (TCP)
Um aplicativo de transferência de arquivo simples criado com C usando soquetes TCP. Este aplicativo inclui um servidor que escuta as conexões do cliente de entrada e serve arquivos e um cliente que solicita um arquivo do servidor e o salva localmente.
Requisitos
Para executar este aplicativo, você precisará:
- Compilador Mingw ou GCC (para compilar o código C no Windows).
- Código do Visual Studio (opcional, para editar e gerenciar o código).
- Git (opcional, para clonar este repositório e controle de versão).
Downloads
Baixe Mingw :
- Vá para a página Sourceforge da Mingw.
- Instale o Mingw e verifique se
gcc está incluído na instalação. - Adicione a pasta
bin da Mingw (por exemplo, C:MinGWbin ) à sua variável de ambiente de caminho .
Instale o Código do Visual Studio (Opcional):
- Faça o download e instale no site do Visual Studio Code.
- Você pode abrir a pasta do projeto no código VS para gerenciar e compilar arquivos facilmente.
GTK 3 (para interface gráfica do usuário).
Verifique a instalação do GCC
Para garantir que o GCC seja instalado corretamente, abra um terminal ou prompt de comando e digite:
Você deve ver as informações da versão se o GCC estiver instalado corretamente.
Downloads
- Baixe Mingw :
- Vá para a página Sourceforge da Mingw.
- Instale o Mingw e verifique se o GCC está incluído na instalação.
- Adicione a pasta Bin da Mingw (por exemplo, c: mingw bin) à sua variável de ambiente de caminho.
- Instale o GTK 3 :
- Faça o download do GTK 3 para Windows do site oficial da GTK.
- Instale o GTK e verifique se as DLLs necessárias são colocadas no caminho do seu sistema ou juntamente com os executáveis compilados. Como alternativa, se você estiver usando o msys2:
- Abra o terminal MSYS2 e execute:
pacman -S mingw-w64-x86_64-gtk3
Começando
- Clone este repositório
- Abra o projeto em seu IDE preferido ou editor de texto
- Você pode usar o código do Visual Studio, o código :: Blocks, Dev-C ++, Clion ou qualquer outro editor de texto IDE que suporta programação C.
- Abra a pasta do projeto no editor escolhido para gerenciar e editar arquivos facilmente.
Compilação - sem GTK
Compilar os aplicativos de servidor e cliente da seguinte forma:
- Compilar o servidor
gcc server.c -o server.exe -lws2_32
- Compilar o cliente
gcc client.c -o client.exe -lws2_32
Isso produzirá server.exe e client.exe.
Executando o aplicativo - sem GTK
Etapa 1: Inicie o servidor
- Abra um terminal ou prompt de comando no diretório do projeto.
- Execute o aplicativo do servidor:
Etapa 2: execute o cliente
- Em um terminal separado ou em uma máquina diferente , navegue até o diretório do projeto.
- Execute o cliente, especificando o endereço IP do servidor e o nome do arquivo que você deseja baixar:
./client.exe < server_ip > < filename >
- Substitua <verver_ip> pelo endereço IP do servidor (por exemplo, 127.0.0.1 se estiver executando localmente).
- Substitua pelo nome do arquivo que você deseja baixar no diretório do servidor.
./client.exe 127.0.0.1 testfile.txt
O cliente se conectará ao servidor, solicitará o arquivo especificado e o salvará localmente com o mesmo nome de arquivo.
Compilar servidor e cliente - com GTK
- Configure pkg-config para encontrar GTK:
- Se você estiver usando o MSYS2 ou outro gerenciador de pacotes como o VCPKG, verifique se o caminho PKG-Config está configurado corretamente. No MSYS2, você pode executar o seguinte comando:
export PKG_CONFIG_PATH= " /mingw64/lib/pkgconfig "
- Atualize C_CPP_PROPERTIES.JSON no Código do Visual Studio: Para garantir que o Código do Visual Studio reconheça o GTK e outras bibliotecas, atualize o arquivo C_CPP_PROPERTIES.JSON para incluir o caminho para o GTK e outras bibliotecas necessárias: Exemplo:
- Pressione Ctrl + Shift + P e pesquise C/C ++: Editar configurações (UI).
- Na seção Incluir Path, adicione caminhos como:
" C:/msys64/mingw64/include/gtk-3.0 " ,
" C:/msys64/mingw64/include/glib-2.0 " ,
" C:/msys64/mingw64/lib/glib-2.0/include " ,
" C:/msys64/mingw64/include/pango-1.0 " ,
" C:/msys64/mingw64/include/cairo " ,
" C:/msys64/mingw64/include/gdk-pixbuf-2.0 " ,
" C:/msys64/mingw64/include/atk-1.0 " ,
" C:/msys64/mingw64/include/harfbuzz "
- Compilar o servidor e o cliente:
- Compilar o aplicativo do servidor:
gcc server_app.c -o server_app.exe ` pkg-config --cflags --libs gtk+-3.0 ` -lws2_32
- Compilar o aplicativo cliente:
gcc client_app.c -o client_app.exe ` pkg-config --cflags --libs gtk+-3.0 ` -lws2_32
Isso produzirá server_app.exe e client_app.exe na pasta do projeto.
Executando o aplicativo - com GTK
Etapa 1: Inicie o servidor
- Abra um terminal ou prompt de comando no diretório do projeto.
- Execute o aplicativo do servidor:
Etapa 2: execute o cliente
- Em um terminal separado ou em uma máquina diferente, navegue até o diretório do projeto.
- Execute o cliente, especificando o endereço IP do servidor e o nome do arquivo que você deseja baixar:
Solução de problemas
- Conexão recusada (10061) : Verifique se o servidor está em execução e ouvindo o IP e a porta especificados.
- IP e porta inválidos : verifique se o cliente e o servidor estão usando o IP e a porta corretos.
- Firewall ou antivírus : Desative temporariamente o firewall ou o software de anitivírus se eles bloquearem as conexões.
Notas
- Verifique se o servidor e o cliente estão na mesma rede ou ajustam as configurações de roteador e firewall para permitir a comunicação.
- Este aplicativo foi projetado para transferências básicas de arquivos e atualmente suporta conexões de cliente único.
Aperfeiçoamentos futuros - Tracker
- Múltiplas transferências de arquivos:
- Suporte a transferência de vários arquivos de uma só vez ou em um lote. Isso pode envolver o envio de uma matriz de nomes de arquivos e transferindo cada arquivo um após o outro.
- Transferências de diretório:
- Permitir transferir diretórios inteiros, que podem envolver o envio de todos os arquivos e pastas, juntamente com os metadados.
- Compressão:
- Para reduzir o tempo de transferência, você pode comprimir os arquivos antes de enviá -los e descomprimi -los no lado receptor.
- Criptografia:
- Implementar criptografia (como SSL/TLS) para transferências de arquivos seguros, especialmente se você planeja enviar dados confidenciais.
- Interface do usuário ✔
- Para o aplicativo com GTK ✔
- Para o aplicativo sem GTK ✔
- Manipulação de erros e outros problemas: ✔
- Sobrescrição de arquivos, tipos de arquivos especiais, verificação de integridade do arquivo. ✔
Se você deseja contribuir, mesmo se você usar o Chat-GPT, saiba o que está fazendo primeiro porque está desperdiçando meu tempo (permanecendo e revisando seu código incompleto de buggy) e o seu (pedindo ao GPT que escreva o código e não obtenha o PR). É tão óbvio quando o solicitante está usando a IA e nem está pensando no problema.
Licença
Este projeto é de código aberto e está disponível sob a licença do MIT.