الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تجارب مشروع الTorrent

مغلق
بدأه bashmohandes في 30 أغسطس 2005 · 4 رد · 684 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم.

هذا كود بسيط كتبته على الConsole الخاص ب C# Express 2005 beta 2 لإرسال و إستقبال ملفات صغيرة من على الNetwork باستخدام الSockets

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.IO;
using System.Threading;

namespace ConsoleApplication1
{
    class Program
    {
        
        static void Main(string[] args)
        {
            Thread t1 = new Thread(new ThreadStart(ReceiverFn));
            Thread t2 = new Thread(new ThreadStart(SenderFn));
            t1.Start();
            t2.Start();
        }

        public static void SenderFn()
        {
            Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            sender.Connect("localhost", 1999);
            //sender.SendFile("C:\\1.txt");
StreamReader reader = File.OpenText("C:\\1.txt");
            sender.Send(Encoding.Default.GetBytes(reader.ReadToEnd()));
reader.Close()
            sender.Close();
        }

        public static void ReceiverFn()
        {
            Socket recv = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint ip = new IPEndPoint(IPAddress.Any, 1999);
            recv.Bind(ip);
            recv.Listen(10);
            Socket sender = recv.Accept();
            byte[] buffer = new byte[1024];
            int bytes = sender.Receive(buffer);
            StreamWriter writer = File.CreateText("C:\\2.txt");
            writer.Write(Encoding.Default.GetString(buffer, 0, bytes));
            writer.Flush();
            writer.Close();
        }
    }
}

و فيم يلي شرح للكود

أولا الكود يعمل على كل من net 1.1 و .net 2.0 ماعدا السطر الخاص بالsender.SendFile فهي خاصة ي.net 2.0 و قد قمت بعمل comment له و استبداله بالسطر الذي يليه.

الشرح

يُستخدم في هذا الكود أسلوبان و هما

1- الThreading

2- الSocket Programming

بالنسبة لThreading فتم استخدامه لعمل الSender و الReceiver في برنامج واحد و لكن في 2 threads منفصلين بدلا من برنامجين مختلفين..

بالنسبة لSocket Programming

استخدام الSocket بدلاً من الTcpClient و الTcpListener يعطي إمكانيات أكبر من حيث التحكم في نوع الProtocol المستخدم و الإرسال المباشر او غير المباشر و كما اتضح مع التجربة أنه أبسط.

الSender

عبارة عن Socket ترسل ملفاً للReciver على port 1999

استُخدمت Socket.Send و هي function تقوم بارسال مجموعة من الbytes على هيئة Array الى الReciever

ال Receiver

عبارة عن Socket أيضا و لكن في وضع الإستقبال

و قد استخدمت الfunction Receive لتلقي الملف على هيئة array of bytes ثم قمنا باعادته الى string مرة اخرى و كتابته في الملف 2.txt

تم تعديل هذه المشاركة بواسطة bashmohandes في 1 سبتمبر 2005 في 14:32

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#2

نشكرك bashmohandes

على هذه المعلومات القيمة

#3

التجربة الثانية

هي ارسال ملف عن طريق الانترنت

الملف مرفق به برنامج بسيط لإرسال و استقبال الملفات على الشبكات...

البرنامج يعمل جيداً و لكنه أحيانــا ينقل الملف معطوب و الحقيقة الساعة 6 صباحاً و مش شايف قدامي

سأشرح البرنامج صباحاً ان شاء الله ... و لكنه سهل و الكود بسيط و إذا قرأته بتركيز ستفهمه

سلام

FileShare.rar

تم تعديل هذه المشاركة بواسطة bashmohandes في 1 سبتمبر 2005 في 06:20

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#4

قمت بكتابة قارئ بسيط لقراءة ملفات الـ torrent. لاستخلاص بعض المعلومات منها.

لا يدعم جميع أنواع الملفات ( يدعم الملفات البسيطه فقط حتى الآن من أجل التجربه ).

استخدامه كالتالي ::

TorrentFileReader tfReader = new TorrentFileReader("xxx.torrent");

TorrentFile myTorrentFile = tfReader.Read();

وينصح بشده استخدام Try ... Catch :D.

بعد ذلك يمكن الوصول الى المعلومات من خلال بعض الـ Properties أو من خلال الـ Index ::

string comment = myTorrentFile.Comment;
أو
string comment = myTorrentFile["comment"].ToString();

... وهكذا ....

Info وللوصول الى الـ

string name = myTorrentFile.Info.Name;
Index أو بالـ
string name = myTorrentFile.Info["name"].ToString();

قمت بعمل الـ Index من أجل الوصول الى بعض المعلومات التي لا يمكن الوصول لها بـ Property.

جاري التطوير ...... ويوجد مثال في المرفقات ::

03_09_05_09_20_16_1125807616TorrentReaderTest.JPG

TorrentReaderTest.rar

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#5

ممتاز يا ميزو

أنا كنت اشتغلت فيه شوية و ان شاء الله الليلة حرفق الشغل اللي عملته في ال Torrent Reader

سلام

Sr. Software Development Engineer
Hulu, LLC
My Blogs

هذا الموضوع مغلق.

مواضيع مشابهة