امروز سه شنبه ، ۱۴۰۱/۰۳/۰۳
بدان

PyP2P برای کار با سوکت های ساده غیر مسدود کننده TCP طراحی شده است. | PyP2P is designed to work with simple non-blocking TCP sockets.

PyP2P برای کار با سوکت های ساده غیر مسدود کننده TCP طراحی شده است.

برای استفاده از آنها ، برنامه شما باید یک حلقه بی نهایت ایجاد کند که برای جستجوی دوره ای پاسخ های جدید استفاده می شود.

همانطور که به دنبال پاسخ می گردید ، این نرم افزار همچنین پذیرش اتصالات جدید و حذف خودکار اتصالات قدیمی است.

کتابخانه همچنین پاسخ های ساختاری را مدیریت می کند ، که به صورت یک لیست ساده به طور کامل بازگردانده می شوند.

قالب پیام اصلی یک پروتکل ساده مبتنی بر خط است: پیام هایی که می خواهید بفرستید با یک خط جدید خاتمه می یابند و وقتی وارد می شوند به طور کامل برمی گردند که این امر اشکال زدایی و توسعه پروتکل های p2p را بسیار ساده می کند (پروتکل های مبتنی بر متن آسان هستند اشکال زدایی.)

گره آلیس:

با این کار یک سرور گوش دادن جدید در پورت 44444 ایجاد می شود ، که باید به ارتباطات از طریق LAN گوش دهد.

رابط کاربری بیشتر برای اطمینان از ایجاد اتصالات فقط از آن رابط مشخص شده است.

به طور پیش فرض ، اتصالات از رابط پیش فرض (معمولاً wlan0 یا eth0) برقرار می شوند که برای شبیه سازی و آزمایش شبکه P2P در همان رایانه مفید نیست.

گره باب:

این کد با گره آلیس ارتباط برقرار می کند و به طور مکرر تست کلمه را برای او ارسال می کند.

توجه داشته باشید که هر دو در رابط های مختلف با IP کاملاً متفاوت چگونه هستند.

این برای اتصال به گره های موجود در همان رایانه ضروری است زیرا کتابخانه اجازه نمی دهد کلاس Net هنگام اجرا در حالت P2P به خود متصل شود (برای کلاس Net نوع = "p2p").

اگر می خواهید ارتباطات تکراری با گره های موجود در همان رابط برقرار کنید ، نوع آن را به صورت "مستقیم" مشخص کنید که کد تست را آسان تر می کند.

توجه داشته باشید که نوع به طور پیش فرض "p2p" است.

اتصال مستقیم:

کدی که تاکنون نشان داده شده برای شبکه های P2P استاندارد پخش / طغیان استاندارد مناسب است ، جایی که تنها نیاز به ارسال پیام به کل شبکه است (به عنوان مثال Bitcoin و Bitmessage) - اما اگر می خواهید کار پیچیده تری انجام دهید ، باید بتوانند مستقیماً با گره ها ارتباط برقرار کنند.

از لحاظ تئوری می توانید گیرنده پیام را مشخص کرده و آن را به شبکه منتقل کنید تا به آنها برسد اما این روش برای اکثر افراد مقیاس خوبی ندارد.

آنچه لازم است راهی برای اتصال مستقیم به گره با قابلیت اطمینان بالا است.

برای پشتیبانی از این عملکرد ما از چیزی به نام UNL استفاده می کنیم: مخفف Universal Node Locator.

UNL ها نحوه اتصال به گره پشت NAT ، فایروال یا همان شبکه را با مشاهده اطلاعات شبکه گره ها در ارتباط با گره های دیگر و استفاده از انواع تکنیک های برانداز از جمله سوراخ سوراخ UPnP ، NATPMP و TCP ، توصیف می کنند.

برای افزایش قابلیت اطمینان بیشتر این کد: این نرم افزار همچنین می تواند با نمونه وصله ای از Kademlia DHT برای پذیرش پیام های مستقیم از گره های دیگر در DHT استفاده شود که به آن دستور می دهد دوباره به کجا متصل شود.

این برای اتصال به گره های پشت NAT بسیار مفید است زیرا با فرض در دسترس بودن منبع ، نیاز به انتقال پورت را کاملاً دور می زند.

در کد قبلی از کلاس Net برای تخم ریزی یک سرور برای پذیرش اتصالات از گره های موجود در شبکه p2p و مدیریت ارتباطات به منظور پخش استفاده شده است.

برای مدیریت اتصالات مستقیم که از همان کلاس استفاده شده است ، تفاوت در کلاس غیر فعال کردن بوت استرپینگ و تبلیغ جزئیات اتصال به سرور بوت استرپ است زیرا این سرویس مخصوص دریافت ارتباطات مستقیم است.