امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
sending packets in python
نویسنده پیام
grimm غایب
كاربر دو ستاره
**

ارسال‌ها: 110
موضوع‌ها: 15
تاریخ عضویت: بهمن ۱۳۹۲

تشکرها : 290
( 255 تشکر در 108 ارسال )
ارسال: #1
sending packets in python
درود
از دوستان پوزش میطلبم بابت کم رنگ شدن
متاسفانه کیبورد بنده دچار مشکل شده و عرصه را برای بنده تنگ کرده است.


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

حال میخواهیم ببینیم چه طور میتوانیم یک اسکریپت ساده بنویسیم که یک پکت را به سوی یک کامپیوتر ارسال نماید.

برای اینکار ابتدا نیاز داریم ماژول socket را فراخوانی نماییم.

کد:
import socket

بعد از فراخوانی نوبت به ایجاد متغییر ها می رسد.

برای اینکار ما به 4 متغییر نیاز داریم
1-متغییری که در ان محتوای پکت را ذخیره میکنیم
2-متغییری که ای پی ادرس یا ادرس سایت را در خودش نگه میدارد.
3-متغییری که شماره پورتی که به ان وصل میشویم را در خود ذخیره میکند.
4-متغییر یا بهتر است بگوییم ابجکت سوکت

البته دقت داشته باشید در python همه چیز یک ابجکت است.

برای ارسال پکت نیاز به ایجاد سوکت داریم و برای همین ماژول سوکت را فراخوانی کردیم سوکت در واقع ترکیب ای پی ادرس و پورت است.

حال متغییر ها را تعریف میکنیم

کد:
Padata='string'.encode()
در این متغییر محتوای پکت نگه داری میشود.
کد:
IP='127.0.0.1'
در این متغییر ای پی کامپیوتر مقصد را ذخیره میکنیم همچنین میتوانیم به جای ای پی ادرس سایت را بدهیم به صورت site.com
کد:
PORT=10001

متغییر port هم برای نگه داری شماره پورت است سعی کنید از پورت هایی استفاده نمایید که ازاد باشند.

کد:
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0)

متغییر s برای کار با سوکت است در اینجا ما سوکت را تعریف کردیم و درون s قرار دادیم.
اما در مورد عبارات داخل پرانتز...
af_inet در واقع پروتکل اینترنت است به غیر از af_inet میتوان از af_unix هم استفاده کرد اما af_unix فقط بر روی سیستم عامل های یونیکس جواب میدهد و مانند af_inet با ای پی ادرس نیست. به غیر از این ها خانواده های دیگری نیز هستند که انچنان کاربرد ندارند.

عبارت بعدی که مشاهده میکنید یعنی عبارت sock_dgram نوع ارتباط است که در اینجا ارتباط از نوع udp است و اگر بخواهید ارتباط tcp ایجاد کنید باید به جای sock_dgram از SOCK_STREAM استفاده نمایید.

حال که ما سوکت خود را تعریف کرده ایم باید یک اتصال ایجاد نماییم. برای اینکار باید به شکل زیر عمل کنیم.

کد:
s.connect((IP,PORT))

حال اگر مشکلی پیش نیاید ما باید به کامپیوتر مورد نظر کانکت شده باشیم.

اکنون میتوانیم با کامپیوتر مورد نظر سند و رسیو داشته باشیم.

برای ارسال یک پکت با متن دلخواه از کد زیر استفاده میکنیم.
کد:
s.send(Padata)
حالا هر متنی در متغییر Padata ذخیره شده باشد به کامپیوتر مورد نظر ارسال خواهد شد.
و اگر درپشت ان کامپیوتر بر روی ان پورت برنامه ای در حال لیسین باشد میتواند این اطلاعات را دریافت کند و نمایش دهد.

در نهایت باید به اتصال پایان دهیم اینکار بعد از ارسال packet انجام میشود.


کد:
s.close()
موفق باشید.
۰۵-مهر-۱۳۹۳, ۱۶:۱۵:۰۴
ارسال‌ها
پاسخ
تشکر شده توسط : omid_phoenix, lord_viper


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  ##Python & Tools## grimm 1 1,862 ۲۱-فروردین-۱۳۹۴, ۲۲:۳۹:۴۲
آخرین ارسال: grimm
  Working with Strings in python grimm 7 3,598 ۲۰-فروردین-۱۳۹۴, ۱۲:۱۹:۵۴
آخرین ارسال: grimm
  Random module in python grimm 10 5,698 ۰۴-آبان-۱۳۹۳, ۱۹:۵۵:۱۲
آخرین ارسال: a.mehran
  Invent Your Own Games With Python grimm 0 1,398 ۰۷-مهر-۱۳۹۳, ۰۲:۰۴:۵۲
آخرین ارسال: grimm
  Hacking Secret Ciphers with Python grimm 0 1,489 ۰۵-مهر-۱۳۹۳, ۲۰:۰۵:۴۲
آخرین ارسال: grimm
  کار با PE در python babyy 1 2,022 ۲۷-آبان-۱۳۹۲, ۰۱:۱۱:۰۹
آخرین ارسال: babyy

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS