صفحه اصلی - فروم پرشین سون

بازگشت   PersianSeven Forums > سخت افزار, نرم افزار و برنامه نویسی | Web Design & Programming > برنامه نویسی > خانواده C++ ,C و Visual C#.Net, Delphi
پورتال پرشين راهنمایی جــوایز IShop وبلاگ پرشین تماس با ما


ارسال مبحث جدید  پاسخ
 
LinkBack ابزارهای موضوع جستجو این تاپیک حالت نمایش
قدیمی 02-08-2014   #1 (لينک اين پست)
معاونت سایت
 
آواتار فرنوش
 
تاريخ عضويت: Oct 2013
محل سكونت: اصفهان
سن: 22
اسم واقعی: یلدا
پست ها: 48,423
تشكرها (از ديگران): 24,972
تشكر شده 18,986 بار در 11,276 پست
چوق (ثروتمند شماره 3): 32,369,474
پاداش داده شده 1,538 مرتبه
تاکنون 1,173 مرتبه با چوق تشکر کرده
تشکر شده با چوق 594 مرتبه
فعاليت Longevity
0/20 10/20
Today پست ها
ssss48423

ويترين جوايز


عکسهای خریداری شده
پرسپولیس تهران چلسی پرسپولیس تهران
New.s Socket - Socket Programming

در ارتباطات شبکه قراردادهايی استفاده می شود تحت عنوان Protocol , پروتکولهای مختلفی ايجاد شده اما در ارتباطات اينترنتی و شبکه هايی که ارتباط ۲ طرفه است بيشتر از نوع( TCP/IP ) استفاده ميشه که اساس اون به صورت خيلی مختصر اينه که برای هر کامپيوتر که به شبکه (که اینترنت هم یه شبکه هستش !!) وصله يه IP مخصوص به خودش رو داره و به نوعی آدرس اون کامپيوتر محسوب ميشه که تمام خصوصيات يه آدرس رو که ميشه متصور شد داراست .

اما چرا گفتم در شبکه هايی که ارتباط ۲ طرفه نيازه از ( TCP/IP ) استفاده ميشه ؟چون انواع ديگری هم از جمله UDP هستند که تقريبا ارتباط يکطرفه ميباشد مثلا برای پخش برنامه های راديويی .

-----------------------------------------------------------------------------------

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

برای داشتن يک ارتباط شبکه ای بايد يک سوکت ايجاد کنيم ( منظور نرم افزاری هستشا !! )که لازمه اين کار اينه که بدانيم برای گوش دادن داريم ايجاد ميکنيم يا برای فرستادن پيام .

اگه برای فرستادن پيام باشه که پر واضحه که نياز به آدرس مقصد داريم . اما اين کافی نيست !!!

امروزه آپارتمان نشينی رونق گرفته و تو کامپيوتر هم نفوذ کرده !!!!

برای فرستادن نامه امروزه تنها آدرس ساختمون طرف کافی نيست و نياز به شماره واحد اون هو هست .

اين فقط يه تمثيل بود ! درسته تو کامپيوتر هم فقط IP کافی نيست و شماره واحد برنامه ای که گوش به زنگه هم نيازه که به اون Port ميگن . يعنی شماره پورت هم نيازه .

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


اينجا ممکنه يه سوال پيش بياد که مگه نه اينکه هر کامپيوتر فقط يه IP داره پس يعنی در يه لحظه آيا فقط به يه کامپيوتر ميتونه وصل شه ؟؟

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


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

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


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


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


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


-----------------------------------------------


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


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


۱- برای فرستادن

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


برای ايجاد سوکت از متد;( ) Create استفاده میشه که ۲ نوع آن به این شکل است که :

1 - برای نوع فرستادن تنها کافیست که این متد بدون پارامتر صدا زده شود : ;( ) Create

2 - برای نوع دریافت کردن ۱ پارامتر نیاز دارد و آن شماره پورت برای دریافت کردن میباشد که به طور مثال :;( ۱۷۵۳) 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 صورت میگیرد.


فرنوش آفلاین است   پاسخ به نقل قول چوق/پاداش
پاسخ

به اشتراک بگذارید

برچسب ها
programming, socket


كاربران در حال ديدن تاپیک: 1 (0 عضو و 1 مهمان)
 
ابزارهای موضوع جستجو این تاپیک
جستجو این تاپیک:

جستجوی پیشرفته
حالت نمایش

مجوزهای ارسال و ویرایش
شما نمیتوانید موضوع جدید ارسال کنید
شما نمیتوانید به پست ها پاسخ دهید
شما نمیتوانید فایل پیوست ضمیمه کنید
شما نمیتوانید ارسال های خود را ویرایش کنید

BB code : فعال
شکلکها : فعال
[IMG] : فعال
HTML : غیر فعال
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال

خط مشی بانک مرکزی
جهت ارسال تاپیک جدید: 100 چوق
جهت ارسال پست: 50 چوق
به ازای هر کارکتر در پست : 1 چوق

تاپیک های مشابه
تاپیک نویسنده موضوع انجمن پاسخ ها آخرین ارسال
تاریخچه ی پیدایش زبان های برنامه نویسی جنبه گرا Aspect Oriented Programming Ramana آموزشهای برنامه نویسی 0 02-05-2014 11:42 AM
برنامه نویسی بازی در سی شارپ (Beginning C# Game Programming) pure love خانواده C++ ,C و Visual C#.Net, Delphi 0 11-18-2013 11:59 AM


زمان محلی شما با تنظیم GMT +3 هم اکنون 06:56 PM میباشد.

Powered by vBulletin .
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.