Dateiübertragungsanwendung in C (TCP)
Eine einfache Dateiübertragungsanwendung, die mit C mit TCP -Sockets erstellt wurde. Diese Anwendung enthält einen Server , der auf eingehende Clientverbindungen hört und Dateien bedient, sowie einen Client , der eine Datei vom Server anfordert und sie lokal speichert.
Anforderungen
Um diese Anwendung auszuführen, benötigen Sie:
- Mingw- oder GCC -Compiler (zum Kompilieren von C -Code unter Windows).
- Visual Studio -Code (optional zum Bearbeiten und Verwalten des Codes).
- Git (optional, um dieses Repository und die Versionskontrolle zu klonen).
Downloads
Download Mingw :
- Gehen Sie zur SourceForge -Seite von Mingw.
- Installieren Sie Mingw und stellen Sie sicher, dass
gcc in der Installation enthalten ist. - Fügen Sie Mingws
bin -Ordner (z. B. C:MinGWbin ) Ihrer Pfadumgebungsvariable hinzu.
Installieren Sie den Visual Studio -Code (optional):
- Laden Sie von der Website von Visual Studio Code herunter und installieren Sie sie.
- Sie können den Projektordner im VS -Code öffnen, um Dateien einfach zu verwalten und zu kompilieren.
GTK 3 (für die grafische Benutzeroberfläche).
Überprüfen Sie die GCC -Installation
Um sicherzustellen, dass GCC korrekt installiert ist, öffnen Sie eine Terminal- oder Eingabeaufforderung und tippen Sie:
Sie sollten Versionsinformationen sehen, wenn GCC ordnungsgemäß installiert ist.
Downloads
- Download Mingw :
- Gehen Sie zur SourceForge -Seite von Mingw.
- Installieren Sie Mingw und stellen Sie sicher, dass GCC in der Installation enthalten ist.
- Fügen Sie Mingws Bin -Ordner (z. B. C: mingw bin) Ihrer Pfadumgebungsvariable hinzu.
- Installieren Sie GTK 3 :
- Laden Sie GTK 3 für Windows von der offiziellen Website von GTK herunter.
- Installieren Sie GTK und stellen Sie sicher, dass die erforderlichen DLLs auf dem Pfad Ihres Systems oder neben den kompilierten Ausführungsfähigkeiten platziert werden. Alternativ, wenn Sie MSYS2 verwenden:
- Öffnen Sie das MSYS2 -Terminal und laufen Sie:
pacman -S mingw-w64-x86_64-gtk3
Erste Schritte
- Klonen Sie dieses Repository
- Öffnen Sie das Projekt in Ihrer bevorzugten IDE- oder Texteditor
- Sie können Visual Studio Code, Code :: Blocks, Dev-C ++, Clion oder einen anderen IDE-Texteditor verwenden, der C-Programmierung unterstützt.
- Öffnen Sie den Projektordner in Ihrem ausgewählten Editor, um Dateien einfach zu verwalten und zu bearbeiten.
Zusammenstellung - ohne GTK
Kompilieren Sie die Server- und Client -Anwendungen wie folgt:
- Kompilieren Sie den Server
gcc server.c -o server.exe -lws2_32
- Kompilieren Sie den Client
gcc client.c -o client.exe -lws2_32
Dies erzeugt server.exe und client.exe.
Ausführen der Anwendung - ohne GTK
Schritt 1: Starten Sie den Server
- Öffnen Sie eine Terminal- oder Eingabeaufforderung im Projektverzeichnis.
- Führen Sie die Serveranwendung aus:
Schritt 2: Führen Sie den Kunden aus
- Navigieren Sie in einem separaten Terminal oder auf einer anderen Maschine zum Projektverzeichnis.
- Führen Sie den Client aus und geben Sie die IP -Adresse des Servers und den Dateinamen an, den Sie herunterladen möchten:
./client.exe < server_ip > < filename >
- Ersetzen Sie <Server_IP> durch die IP -Adresse des Servers (z. B. 127.0.0.1, wenn Sie lokal ausgeführt werden).
- Ersetzen Sie den Namen der Datei, die Sie aus dem Verzeichnis des Servers herunterladen möchten.
./client.exe 127.0.0.1 testfile.txt
Der Client stellt eine Verbindung zum Server her, fordert die angegebene Datei an und speichert sie lokal mit demselben Dateinamen.
Kompilieren Sie Server und Client - mit GTK
- Richten Sie PKG-Config ein, um GTK zu finden:
- Wenn Sie MSYS2 oder einen anderen Paketmanager wie VCPKG verwenden, stellen Sie sicher, dass der PKG-Konfigurationspfad ordnungsgemäß konfiguriert ist. In MSYS2 können Sie den folgenden Befehl ausführen:
export PKG_CONFIG_PATH= " /mingw64/lib/pkgconfig "
- Aktualisieren Sie c_cpp_properties.json im Visual Studio -Code: Um sicherzustellen, dass Visual Studio -Code GTK und andere Bibliotheken erkennt, aktualisieren Sie die Datei c_cpp_properties.json, um den Pfad zu GTK und anderen erforderlichen Bibliotheken einzuschließen: Beispiel:
- Drücken Sie Strg + Shift + P und suchen Sie nach C/C ++: Konfigurationen (UI) bearbeiten.
- Fügen Sie im Abschnitt "Pfad integrieren" Pfade hinzu wie:
" 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 "
- Kompilieren Sie den Server und den Client:
- Kompilieren Sie die Serveranwendung:
gcc server_app.c -o server_app.exe ` pkg-config --cflags --libs gtk+-3.0 ` -lws2_32
- Kompilieren Sie die Client -Anwendung:
gcc client_app.c -o client_app.exe ` pkg-config --cflags --libs gtk+-3.0 ` -lws2_32
Dadurch werden in Ihrem Projektordner server_app.exe und client_app.exe erstellt.
Ausführen der Anwendung - mit GTK
Schritt 1: Starten Sie den Server
- Öffnen Sie eine Terminal- oder Eingabeaufforderung im Projektverzeichnis.
- Führen Sie die Serveranwendung aus:
Schritt 2: Führen Sie den Kunden aus
- Navigieren Sie in einem separaten Terminal oder auf einer anderen Maschine zum Projektverzeichnis.
- Führen Sie den Client aus und geben Sie die IP -Adresse des Servers und den Dateinamen an, den Sie herunterladen möchten:
Fehlerbehebung
- Verbindung verweigert (10061) : Stellen Sie sicher, dass der Server ausgeführt wird und auf die angegebene IP und Port und Port anhört.
- Ungültige IP und Port : Überprüfen Sie, ob der Client und der Server die richtige IP und den richtigen Port verwenden.
- Firewall oder Antivirus : Deaktivieren Sie vorübergehend die Firewall- oder Anivirus -Software, wenn sie Verbindungen blockieren.
Notizen
- Stellen Sie sicher, dass der Server und der Client im selben Netzwerk sind, oder passen Sie die Einstellungen für die Router und die Firewall an, um die Kommunikation zu ermöglichen.
- Diese Anwendung ist für grundlegende Dateiübertragungen ausgelegt und unterstützt derzeit Verbindungen mit einzelnen Klienten.
Zukünftige Verbesserungen - Tracker
- Mehrere Dateiübertragungen:
- Unterstützen Sie das Übertragen mehrerer Dateien gleichzeitig oder in einer Stapel. Dies könnte das Senden eines Arrays von Dateinamen und das Anschließung jeder Datei nacheinander beinhalten.
- Verzeichnistransfers:
- Ermöglichen Sie das Übertragen von ganzen Verzeichnissen, die das rekursive Senden aller Dateien und Ordner zusammen mit Metadaten umfassen können.
- Kompression:
- Um die Übertragungszeit zu verkürzen, können Sie die Dateien vor dem Senden und Dekomprimieren auf der Empfangsseite komprimieren.
- Verschlüsselung:
- Implementieren Sie die Verschlüsselung (wie SSL/TLS) für sichere Dateiübertragungen, insbesondere wenn Sie vorhaben, sensible Daten zu senden.
- Benutzeroberfläche ✔
- Für die Anwendung mit GTK ✔
- für die Anwendung ohne GTK ✔
- Fehlerbehandlung und andere Probleme: ✔
- Dateiüberschreibung, Spezial -Dateitypen, Dateiintegritätsprüfung. ✔
Wenn Sie dazu beitragen möchten, auch wenn Sie Chat-GPT verwenden, wissen Sie bitte zuerst, was Sie tun, da Sie sowohl meine Zeit verschwenden (indem Sie Ihren fehlerhaften unvollständigen Code bleiben und überprüft) als auch Ihre Zeit (indem Sie GPT bitten, den Code zu schreiben und den PR nicht zu erhalten). Es ist so offensichtlich, wenn der Antragsteller KI verwendet und nicht einmal über das Problem nachdenkt.
Lizenz
Dieses Projekt ist Open-Source und im Rahmen der MIT-Lizenz verfügbar.