تطبيق نقل الملفات في C (TCP)
تطبيق بسيط نقل الملف مصمم باستخدام C باستخدام مآخذ TCP. يتضمن هذا التطبيق خادمًا يستمع إلى اتصالات العميل الواردة ويخدم الملفات ، وعميل يطلب ملفًا من الخادم ويحفظه محليًا.
متطلبات
لتشغيل هذا التطبيق ، ستحتاج:
- برنامج التحويل البرمجي Mingw أو GCC (لتجميع رمز C على Windows).
- Visual Studio Code (اختياري ، لتحرير وإدارة الكود).
- git (اختياري ، لاستنساخ هذا المستودع والتحكم في الإصدار).
التنزيلات
تنزيل mingw :
- انتقل إلى صفحة Mingw SourceForge.
- تثبيت MINGW وتأكد من تضمين
gcc في التثبيت. - أضف مجلد
bin مينغو (على سبيل المثال ، C:MinGWbin ) إلى متغير بيئة المسار .
تثبيت رمز Visual Studio (اختياري):
- قم بتنزيل وتثبيت من موقع Visual Studio Code.
- يمكنك فتح مجلد المشروع في VS Code لإدارة الملفات وتجميعها بسهولة.
GTK 3 (لواجهة المستخدم الرسومية).
تحقق من تثبيت GCC
لضمان تثبيت GCC بشكل صحيح ، افتح موجه الطرفية أو الأوامر ونوعه:
يجب أن ترى معلومات الإصدار إذا تم تثبيت GCC بشكل صحيح.
التنزيلات
- تنزيل mingw :
- انتقل إلى صفحة Mingw SourceForge.
- تثبيت MINGW وتأكد من تضمين GCC في التثبيت.
- أضف مجلد بن مينغو (على سبيل المثال ، C: mingw bin) إلى متغير بيئة المسار.
- تثبيت GTK 3 :
- قم بتنزيل GTK 3 لنظام التشغيل Windows من موقع GTK الرسمي.
- قم بتثبيت GTK وتأكد من وضع DLLs المطلوبة في مسار النظام الخاص بك أو إلى جانب المناظر التنفيذية المترجمة. بدلاً من ذلك ، إذا كنت تستخدم MSYS2:
- افتح محطة MSYS2 وتشغيلها:
pacman -S mingw-w64-x86_64-gtk3
ابدء
- استنساخ هذا المستودع
- افتح المشروع في IDE أو محرر النصوص المفضل لديك
- يمكنك استخدام رمز Visual Studio أو الكود :: الكتل أو Dev-C ++ أو Clion أو أي محرر نصوص IDE آخر يدعم البرمجة C.
- افتح مجلد المشروع في المحرر الذي اخترته لإدارة الملفات وتحريرها بسهولة.
التجميع - بدون GTK
قم بتجميع تطبيقات الخادم والعميل على النحو التالي:
- تجميع الخادم
gcc server.c -o server.exe -lws2_32
- تجميع العميل
gcc client.c -o client.exe -lws2_32
سيؤدي هذا إلى إنتاج server.exe و client.exe.
تشغيل التطبيق - بدون GTK
الخطوة 1: ابدأ الخادم
- افتح محطة أو موجه أوامر في دليل المشروع.
- قم بتشغيل تطبيق الخادم:
الخطوة 2: قم بتشغيل العميل
- في محطة منفصلة أو على جهاز مختلف ، انتقل إلى دليل المشروع.
- قم بتشغيل العميل ، وتحديد عنوان IP الخاص بالخادم واسم الملف الذي تريد تنزيله:
./client.exe < server_ip > < filename >
- استبدل <sroper_ip> بعنوان IP الخاص بالخادم (على سبيل المثال ، 127.0.0.1 إذا كان التشغيل محليًا).
- استبدل باسم الملف الذي تريد تنزيله من دليل الخادم.
./client.exe 127.0.0.1 testfile.txt
سيقوم العميل بالاتصال بالخادم ، واطلب الملف المحدد ، وحفظه محليًا بنفس اسم الملف.
تجميع الخادم والعميل - مع GTK
- قم بإعداد PKG-Config للعثور على GTK:
- إذا كنت تستخدم MSYS2 أو مدير حزمة آخر مثل VCPKG ، تأكد من تكوين مسار PKG-Config بشكل صحيح. في MSYS2 ، يمكنك تشغيل الأمر التالي:
export PKG_CONFIG_PATH= " /mingw64/lib/pkgconfig "
- تحديث C_CPP_Properties.json في Visual Studio Code: لضمان أن رمز Visual Studio يتعرف على GTK والمكتبات الأخرى ، قم بتحديث ملف C_CPP_Properties.json لتضمين المسار إلى GTK والمكتبات الضرورية الأخرى: مثال:
- اضغط على Ctrl + Shift + P والبحث عن C/C ++: تحرير التكوينات (UI).
- في قسم التضمين ، أضف مسارات مثل:
" 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 "
- تجميع الخادم والعميل:
gcc server_app.c -o server_app.exe ` pkg-config --cflags --libs gtk+-3.0 ` -lws2_32
gcc client_app.c -o client_app.exe ` pkg-config --cflags --libs gtk+-3.0 ` -lws2_32
سيؤدي ذلك إلى إنتاج server_app.exe و client_app.exe في مجلد المشروع الخاص بك.
تشغيل التطبيق - مع GTK
الخطوة 1: ابدأ الخادم
- افتح محطة أو موجه أوامر في دليل المشروع.
- قم بتشغيل تطبيق الخادم:
الخطوة 2: قم بتشغيل العميل
- في محطة منفصلة أو على جهاز مختلف ، انتقل إلى دليل المشروع.
- قم بتشغيل العميل ، وتحديد عنوان IP الخاص بالخادم واسم الملف الذي تريد تنزيله:
استكشاف الأخطاء وإصلاحها
- تم رفض الاتصال (10061) : تأكد من تشغيل الخادم والاستماع إلى IP والمنفذ المحدد.
- IP غير صالحين ومنفذ : تحقق من أن كل من العميل والخادم يستخدمان IP والمنفذ الصحيحان.
- جدار الحماية أو مكافحة الفيروسات : تعطيل جدار الحماية أو برنامج ANITIVIRUS مؤقتًا إذا قاموا بحظر الاتصالات.
ملحوظات
- تأكد من أن الخادم والعميل على نفس الشبكة ، أو ضبط إعدادات الجدار وجدار الحماية للسماح بالاتصال.
- تم تصميم هذا التطبيق لنقل الملفات الأساسية ويدعم حاليًا اتصالات ذات عميل واحد.
التحسينات المستقبلية - تعقب
- نقل الملفات المتعددة:
- دعم نقل ملفات متعددة مرة واحدة أو في دفعة. قد يتضمن ذلك إرسال مجموعة من أسماء الملفات ثم نقل كل ملف تلو الآخر.
- نقل الدليل:
- السماح بنقل الدلائل بأكملها ، والتي يمكن أن تتضمن إرسال جميع الملفات والمجلدات بشكل متكرر ، إلى جانب البيانات الوصفية.
- ضغط:
- لتقليل وقت النقل ، يمكنك ضغط الملفات قبل إرسالها وإلغاء ضغطها على الجانب المتلقي.
- التشفير:
- قم بتنفيذ التشفير (مثل SSL/TLS) لنقل الملفات الآمن ، خاصة إذا كنت تخطط لإرسال بيانات حساسة.
- واجهة المستخدم ✔
- للتطبيق مع GTK ✔
- للتطبيق بدون GTK ✔
- معالجة الخطأ والمشاكل الأخرى: ✔
- الملف المفرط ، أنواع الملفات الخاصة ، فحص تكامل الملف. ✔
إذا كنت ترغب في المساهمة ، حتى إذا كنت تستخدم الدردشة-GPT ، فيرجى معرفة ما تفعله أولاً لأنك تضيع وقتي (من خلال البقاء ومراجعة رمزك غير المكتمل) و COURT (من خلال مطالبة GPT بكتابة الرمز وعدم الحصول على العلاقات العامة). من الواضح جدًا عندما يستخدم الطالب الذكاء الاصطناعي ولا يفكر في هذه القضية.
رخصة
هذا المشروع مفتوح المصدر ومتوفر بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.