Aplikasi Transfer File di C (TCP)
Aplikasi transfer file sederhana yang dibangun dengan C menggunakan soket TCP. Aplikasi ini mencakup server yang mendengarkan koneksi klien yang masuk dan melayani file, dan klien yang meminta file dari server dan menyimpannya secara lokal.
Persyaratan
Untuk menjalankan aplikasi ini, Anda akan membutuhkan:
- Kompiler MINGW atau GCC (untuk mengkompilasi kode C pada Windows).
- Visual Studio Code (opsional, untuk mengedit dan mengelola kode).
- Git (opsional, untuk mengkloning repositori dan kontrol versi ini).
Unduhan
Unduh Mingw :
- Pergi ke halaman SourceForge Mingw.
- Instal MINGW dan pastikan bahwa
gcc termasuk dalam instalasi. - Tambahkan Folder
bin Mingw (mis. C:MinGWbin ) ke variabel lingkungan jalur Anda.
Instal Visual Studio Code (Opsional):
- Unduh dan instal dari situs web Visual Studio Code.
- Anda dapat membuka folder proyek di VS Code untuk dengan mudah mengelola dan mengkompilasi file.
GTK 3 (untuk antarmuka pengguna grafis).
Verifikasi instalasi GCC
Untuk memastikan GCC diinstal dengan benar, buka terminal atau prompt perintah dan ketik:
Anda akan melihat informasi versi jika GCC diinstal dengan benar.
Unduhan
- Unduh Mingw :
- Pergi ke halaman SourceForge Mingw.
- Instal MINGW dan pastikan bahwa GCC termasuk dalam instalasi.
- Tambahkan Folder Bin Mingw (mis. C: Mingw bin) ke variabel lingkungan jalur Anda.
- Instal GTK 3 :
- Unduh GTK 3 untuk Windows dari situs web resmi GTK.
- Instal GTK dan pastikan DLL yang diperlukan ditempatkan di jalur sistem Anda atau di samping executable yang dikompilasi. Atau, jika Anda menggunakan msys2:
- Buka terminal msys2 dan jalankan:
pacman -S mingw-w64-x86_64-gtk3
Memulai
- Kloning repositori ini
- Buka proyek di IDE atau editor teks pilihan Anda
- Anda dapat menggunakan kode studio visual, kode :: blok, dev-c ++, clion, atau editor teks IDE lainnya yang mendukung pemrograman C.
- Buka folder proyek di editor pilihan Anda untuk mengelola dan mengedit file dengan mudah.
Kompilasi - Tanpa GTK
Kompilasi aplikasi server dan klien sebagai berikut:
- Kompilasi server
gcc server.c -o server.exe -lws2_32
- Mengkompilasi klien
gcc client.c -o client.exe -lws2_32
Ini akan menghasilkan server.exe dan client.exe.
Menjalankan Aplikasi - Tanpa GTK
Langkah 1: Mulai server
- Buka terminal atau prompt perintah di direktori proyek.
- Jalankan aplikasi server:
Langkah 2: Jalankan klien
- Di terminal terpisah atau pada mesin yang berbeda , arahkan ke direktori proyek.
- Jalankan klien, tentukan alamat IP server dan nama file yang ingin Anda unduh:
./client.exe < server_ip > < filename >
- Ganti <server_ip> dengan alamat IP server (misalnya, 127.0.0.1 jika berjalan secara lokal).
- Ganti dengan nama file yang ingin Anda unduh dari direktori server.
./client.exe 127.0.0.1 testfile.txt
Klien akan terhubung ke server, meminta file yang ditentukan, dan menyimpannya secara lokal dengan nama file yang sama.
Kompilasi server dan klien - dengan GTK
- Siapkan PKG-Config untuk menemukan GTK:
- Jika Anda menggunakan MSYS2 atau manajer paket lain seperti VCPKG, pastikan jalur PKG-Config dikonfigurasi dengan benar. Di MSYS2, Anda dapat menjalankan perintah berikut:
export PKG_CONFIG_PATH= " /mingw64/lib/pkgconfig "
- Perbarui c_cpp_properties.json dalam kode studio visual: Untuk memastikan kode studio visual mengenali GTK dan perpustakaan lainnya, perbarui file C_CPP_PROPERTIES.JSON untuk memasukkan jalur ke GTK dan perpustakaan lain yang diperlukan: Contoh:
- Tekan Ctrl + Shift + P dan cari C/C ++: Edit Konfigurasi (UI).
- Di bagian termasuk jalur, tambahkan jalur seperti:
" 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 "
- Kompilasi server dan klien:
- Kompilasi aplikasi server:
gcc server_app.c -o server_app.exe ` pkg-config --cflags --libs gtk+-3.0 ` -lws2_32
- Kompilasi aplikasi klien:
gcc client_app.c -o client_app.exe ` pkg-config --cflags --libs gtk+-3.0 ` -lws2_32
Ini akan menghasilkan server_app.exe dan client_app.exe di folder proyek Anda.
Menjalankan aplikasi - dengan GTK
Langkah 1: Mulai server
- Buka terminal atau prompt perintah di direktori proyek.
- Jalankan aplikasi server:
Langkah 2: Jalankan klien
- Di terminal terpisah atau pada mesin yang berbeda, arahkan ke direktori proyek.
- Jalankan klien, tentukan alamat IP server dan nama file yang ingin Anda unduh:
Pemecahan masalah
- Koneksi ditolak (10061) : Pastikan server berjalan dan mendengarkan pada IP dan port yang ditentukan.
- IP dan port yang tidak valid : Verifikasi baik klien dan server menggunakan IP dan port yang benar.
- Firewall atau Antivirus : Untuk sementara menonaktifkan firewall atau perangkat lunak anitivirus jika mereka memblokir koneksi.
Catatan
- Pastikan server dan klien berada di jaringan yang sama, atau sesuaikan pengaturan router dan firewall untuk memungkinkan komunikasi.
- Aplikasi ini dirancang untuk transfer file dasar dan saat ini mendukung koneksi klien tunggal.
Peningkatan Masa Depan - Pelacak
- Beberapa transfer file:
- Dukungan mentransfer beberapa file sekaligus atau dalam batch. Ini dapat melibatkan pengiriman array nama file dan kemudian mentransfer setiap file satu demi satu.
- Transfer Direktori:
- Izinkan mentransfer seluruh direktori, yang dapat melibatkan pengiriman rekursif semua file dan folder, bersama dengan metadata.
- Kompresi:
- Untuk mengurangi waktu transfer, Anda dapat mengompres file sebelum mengirim dan mendekompresi mereka di sisi penerima.
- Enkripsi:
- Menerapkan enkripsi (seperti SSL/TLS) untuk transfer file yang aman, terutama jika Anda berencana untuk mengirim data sensitif.
- Antarmuka pengguna ✔
- untuk aplikasi dengan GTK ✔
- untuk aplikasi tanpa gtk ✔
- Penanganan kesalahan dan masalah lainnya: ✔
- File Overwritting, Jenis File Khusus, Pemeriksaan Integritas File. ✔
Jika Anda ingin berkontribusi, bahkan jika Anda menggunakan Chat-GPT, ketahuilah apa yang Anda lakukan terlebih dahulu karena Anda membuang-buang waktu saya (dengan tetap dan meninjau kode buggy Anda yang belum selesai) dan Anda (dengan meminta GPT untuk menulis kode dan tidak mendapatkan PR). Sangat jelas ketika pemohon menggunakan AI dan bahkan tidak memikirkan masalah ini.
Lisensi
Proyek ini open-source dan tersedia di bawah lisensi MIT.