تبلیغات

نسل باران

|

بانک شماره و موبایل popup window

قالب های حرفه ای وردپرس

|

پلاگین وردپرس popup window

وب سایت دانشجویان کارشناسی و ارشد کامپیوتر خرم آباد - مقدمه Socket Network Programming (برنامه نویسی برای socket )
نسل باران
وب سایت دانشجویان کارشناسی و ارشد کامپیوتر خرم آباد
امام علی (ع) می فرمایند: « زکات العلم نشرهُ» زکات علم نشر آن است.
به سایت ما خوش آمدید


مقدمه ای بر Socket Network Programming


Socket Programming در ارتباطات شبکه قراردادهایی استفاده می شود تحت عنوان Protocol ,
پروتکولهای مختلفی ایجاد شده اما در ارتباطات اینترنتی و شبکه هایی که ارتباط ۲ طرفه است
بیشتر از نوع( TCP/IP ) استفاده میشه که اساس اون به صورت خیلی مختصر اینه که برای هر
کامپیوتر که به شبکه (که اینترنت هم یه شبکه هستش !!) وصله یه IP مخصوص به خودش رو داره و به نوعی آدرس اون کامپیوتر محسوب میشه که تمام خصوصیات یه آدرس رو که میشه متصور شد داراست .
اما چرا گفتم در شبکه هایی که ارتباط ۲ طرفه نیازه از ( TCP/IP ) استفاده میشه ؟
چون انواع دیگری هم از جمله UDP هستند که تقریبا ارتباط یکطرفه میباشد مثلا برای پخش برنامه های رادیویی .
-----------------------------------------------------------------------------------

اصلی ترین عامل در یک ارتباط شبکه ای Socket میباشد که اعمال شبکه را بصورت خواندن و
نوشتن در یک فایل شبیه سازی نموده است . سوکت در اصل مانند یک کانال ارتباطی است
که میان دو نقطه ایجاد شده و پیغامها رد و بدل میشود.
برای داشتن یک ارتباط شبکه ای باید یک سوکت ایجاد کنیم ( منظور نرم افزاری هستشا !! )
که لازمه این کار اینه که بدانیم برای گوش دادن داریم ایجاد میکنیم یا برای فرستادن پیام .
اگه برای فرستادن پیام باشه که پر واضحه که نیاز به آدرس مقصد داریم . اما این کافی نیست !!!
امروزه آپارتمان نشینی رونق گرفته و تو کامپیوتر هم نفوذ کرده !!!!
برای فرستادن نامه امروزه تنها آدرس ساختمون طرف کافی نیست و نیاز به شماره واحد اون هو هست .
این فقط یه تمثیل بود ! درسته تو کامپیوتر هم فقط IP کافی نیست و شماره واحد برنامه ای که گوش به زنگه هم نیازه که به اون Port میگن . یعنی شماره پورت هم نیازه .
اما یه چیز یادم رفت بگم که IP از ۴ عدد ۰تا۲۵۵ تشکیل شده که با نقطه از هم جدا میشن مثلا : ۱۶۸.۲۳.۵۶.۹۸ یه IP هستش . اما پورت اعدادی بین ۱ تا (بصورت رایج) ۶۵۰۰۰ را میتونه شامل بشه .(بله بزرگتر از این عدد هم میتونه شماره پورت بشه اما چه کاریه !!!)

اینجا ممکنه یه سوال پیش بیاد که مگه نه اینکه هر کامپیوتر فقط یه IP داره پس یعنی در یه لحظه آیا فقط به یه کامپیوتر میتونه وصل شه ؟؟
جواب منفی است
درسته که IP یکی بیشتر نیست اما تعداد معتنابهی پورت داریم
یعنی با هر پورت به یه کامپیوتر متصل میشیم و میتونیم تا ۶۵۰۰۰ (می دونم بیشتره ;-) ) ارتباط از صدقه سری پورتها داشته باشیم .

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

-----------
اولین نکته ای که لازمه بگم اینه که تو استفاده از سوکت در اول ایجاد پروژه حتما باید چک باکس مربوط به WinSock رو تیک کنید که تو درس بعدی با جزئیات بیشتری خواهم گفت .

در برنامه نویسی سوکت ۲ نوع ارتباط خواهیم داشت :

الف ) در هنگام دریافت یا ارسال پیغام تمام برنامه متوقف می شود که در بسیاری از موارد اصلا مطلوب نیست

ب) بر اساس Event پایه گذاری می شود که هر موقع پیغامی منتظر دریافت شدن بود آنرا دریافت کند و هر موقع پیغام آماده فرستادن بود آنرا بفرستد و کل برنامه از کار نیافتد که در اکثر موارد این روش استفاده می شود .

-----------------------------------------------
تمام نیازهای مارا یک کلاس به نام CAsyncSocket تامین می کند . که با ساختن شئ از آن می توانیم به امکاناتی نظیر send , Receive ,... دسترسی داشته باشیم که مفصلترش رو توضیح خواهم داد . که هرچی بعد از این از توابع اسم میبرم مربوط به این کلاس هستش

برای این نوع ارتباط که داریم بحث می کنیم ۲ جور سوکت باید بسازیم :

۱- برای فرستادن
۲- برای گوش دادن یا همون دریافت

برای ایجاد سوکت از متد;( ) Create استفاده میشه که ۲ نوع آن به این شکل است که :
۱- برای نوع فرستادن تنها کافیست که این متد بدون پارامتر صدا زده شود : ;( ) Create
۲- برای نوع دریافت کردن ۱ پارامتر نیاز دارد و آن شماره پورت برای دریافت کردن میباشد که به طور مثال :;( ۱۷۵۳) Create

-----------------------------------------------
بعد از ایجاد سوکت کار بعدی وصل شدن به برنامه مقصد هستش که منتظر دریافت پیغام هستش .
این کار از جانب فرستنده پیغام شروع میشه که باید متد;( ) Connect صدا زده بشه .
این متد ۲ پارامتر نیاز دارد :

۱- IP کامپیوتر مقصد یا آدرس تحت وب آن مثلا :" www.taraf.com" ( اگر در یک شبکه محلی میخواید وصل بشید اسم کامپیوتر هم میتونه جای IP به کار بره ) که بصورت یه رشته خواهد بود
۲- شماره پورت کامپیوتر مقصد که گوش به زنگ هستش

مثلا : ;(۱۳۶۵,"192.۱68. 12 .39")Connect

---------------------------------------------------
اما قبل وصل شدن نیازه که گوش به زنگ بشیم تا بتونیم درخواستهای اتصال رو جواب بدیم برای این کار از متد;( ) Listen بدون هیچ پارامتری استفاده میکنیم تا سوکت دریافت آماده بشه .

---------------------------------------------------
حالا که به اینجا رسیدیم وقتی تقاضای وصل شدن از سمت یه کامپیوتر دیگه به ما میرسه رو باید قبول کنیم :
گوش به زنگ هستیم که اگه تقاضایی رسید با متد ;( ) Accept قبولش کنیم
این متد یه پارامتر میگیره و اون یه شئ از کلاس CAsyncSocket هستش که وظیفه دریافت متن پیغامهای بعد از متصل شدن رو به عهده میگیره .

--------------------------------------------------
برای فرستادن پیغام از متد ;( ) Send استفاده میکنیم که ۲ پارامتر میگیرد :

۱- اشاره گر به بافر داده مورد نظر برای فرستادن است که با استفاده از تابع;(‌ ) LPCTSTR استفاده میکنیم که یک پارامتر ورودی دارد و آن متغییری است که پیغام ما در آن است .
۲- طول بافر که همان طول پیغام می باشد

مثلا اگه پیغام در متغییری به نام str باشه به شکل زیر میفرستیم :
; (()str.GetLengthو(Send(LPCTSTR(str

-------------------------------------------------
وقتی پیغام به گوش دهنده برسه یه Eventبه نام;( ) OnReceive فعال میشه که با متد ;( )Receive پیغام را دریافت می کند که ۲ پارامتر می گیرد :

۱- اشاره گر به یک بافر که میتواند یک رشته کاراکتری باشد
۲- طول بافر مورد نظر که به چه طولی از پیغام را می خاهیم دریافت کنیم

بعد از اتمام کار با سوکت باید انرا ببندیم که این کار با متد ;( ) Close صورت میگیرد


منبع : irvirus.com



نوع مطلب : Socket Programming، برنامه نویسی، 
برچسب ها :
لینک های مرتبط :

1396/06/27 19:25
You should take part in a contest for one of the most useful blogs on the net.
I will highly recommend this site!
1396/01/25 10:23
Hi! Would you mind if I share your blog with my twitter group?
There's a lot of folks that I think would really appreciate your content.
Please let me know. Thanks
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر


درباره وبلاگ


امام صادق(ع) می فرمایند: «اِنُّ لِکلِّ شیءٍ زکاةً و زکاةُ العِلمِ اَنْ یُعَلِّمَهُ اَهلَهُ» برای هر چیزی زکاتی است،و زکات علم آن است که آن را به اشخاص شایسته بیاموزید. (منبع: تحف.ص 364)

امام علی (ع) می فرمایند: « زکات العلم نشرهُ» زکات علم نشر آن است.

مدیر وبلاگ : s1390
مطالب اخیر
نویسندگان
صفحات جانبی
آمار وبلاگ
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :
فرم تماس
نام و نام خانوادگی
آدرس ایمیل
امکانات دیگر
دریافت كد ختم صلوات
کلیه حقوق این وبلاگ برای وب سایت دانشجویان کارشناسی و ارشد کامپیوتر خرم آباد محفوظ است