|
مقدمه اي بر پروتکل TCP در .NET :
برنامه نويسي پورت در دات نت به نسبت مدلهاي قبلي برنامه نويسي بسيار بهينه شده
است.
قبلا بيشتر برنامه نويسان Visual C++ از دو کلاس CSocket و CAsyncSocket براي
برنامه نويسي پورت استفاده مي کردند بعضي هم از کلاسها و کتابخانه هاي متفرقه بهره
مي بردند.
در گذشته هيچ روش برنامه نويسي سطح بالايي براي برنامه نويسي TCP وجود نداشت (البته
منظور من در برنامه نويسي در زبانهاي مايکروسافتي است نه دلفي)ما برنامه نويسان
مجبور بوديم از توابع مشکل وکلاسهاي سطح پائين که کار با آنها سخت است استفاده
کنيم.
در دات نت يک مجموعه کامل از کلاسها و توابع در namespace جامعي بنام
System.Net.Sockets گردآوري شده است.
اين مجموعه شامل کلاسهاي سطح پائين مثل کلاس Socket و همچنين کلاسهاي سطح بالا
مانند TCPClient و TCPListener مي باشد.
هر دو کلاس فوق الذکر از يک مدل Stream براي ارسال و دريافت اطلاعات استفاده مي
کنند. کلاسSocket از يک روش Byte-Level براي انتقال اطلاعات استفاده مي نمايد.
در کلاسهاي TCPClient و TCPListener تمام ارتباطات بين Client و Server براساس
Stream است که توسط يک عضو از کلاس بنام NetworkStream مديريت مي شود.
کلاس TCPClient:
اين کلاس ارتباطات سمت Client را براي سرويس دهي TCP مديريت مي کند. TCPClient
براساسکلاس Socket ايجاد شده است تا سرويس دهي TCP را در سطح بالاتر و ساده تري
مديريت نمايد.
اين کلاس داراي يک عضو خصوصي (private member) بنامه m_ClientSocket است که براي
ارتباط با TCP Server مورد استفاده قرار مي گيرد.
کلاس TCPClient متدهاي ساده اي را براي ارتباط با ساير برنامه ها دارا مي باشد.
خصوصيات و متدهاي مهم کلاس TCPClient به قرار زير است:
1 – خصوصيات عمومي :
LingerState : اين خصوصيت نوع داده اي بنام LingerOption را نگه مي دارد.
LingerOption اطلاعاتي درباره مدت زمان بازبودن اتصال پس از بسته شدن پورت
رانگهداري مي کند.
NoDelay : اين خصوصيت يک مقدار bool را نگه مي دارد که با تنظيم آن مي توان تعيين
نمود که پورتتا پر شدن کامل بافر براي ارسال يا دريافت اطلاعات صبر کند يا نه.
اگر اين خصوصيت false باشد TCP تا پر شدن بافردر ارسال Packet ها تاخير ايجاد مي
کند اين امر مانع ارسال Packet هاي کوچک به تعداد زياد در شبکه شده و از ترافيک
شبکه مي کاهد.
RecieveBufferSize : اين خصوصيت يک مقدار int رانگه مي دارد که تعيين کننده سايز
بافر دريافت کننده اطلاعات بر حسب بايت است.
RecieveTimeout: مدت زمان انتظار TCPClient از زمان ايجاد تا دريافت اولين Packet
را برحسب ميلي ثانيه تعيين مي کند.اين خصوصيت نوع داده int را نگه مي دارد.
در صورت عدم دريافت هيچ Packet معتبري يک کلاس Exception بنامSocketException صدا
زده ميشود.
SendBufferSize : اين خصوصيت نوع داده int رانگه مي دارد که تعيين کننده سايز بافر
خروجي برحسب بايت است.
SendTimeout :اين خصوصيت نوع داده int را نگه مي دارد که مدت زمان انتظار TCPClient
رابراي دريافت تاييديه اطلاعات فرستاده شده از TCPClient به سرور روي شبکه را برحسب
ميلي ثانيه معين مي کند.
در صورت عدم دريافت هيچ پاسخي يک کلاس Exception بنام SocketException فراخواني مي
شود.
2- متدهاي عمومي:
Close() : ارتباط TCP را قطع مي کند.
Connect() : ارتباط را با سرور TCP برقرار مي سازد.
GetStraeam() : اين متد يک NetworkStream مورد استفاده بين Client و Server را باز
مي گرداند.
3- خصوصيات حفاظت شده :
Active :
نوع: bool
تعيين کننده وجود يا قطع يک ارتباط فعال با سرور است.
Client :
نوع : Socket
پورت استفاده شده توسط TCPClient را معين مي کند. چون اين خصوصيت Protected مي باشد
پورتمورد استفاده فقط وقتي قابل دسترسي است که شما يک کلاس دلخواه از TCPClient به
ارث ببريد.
پايان قسمت اول
نویسنده:
Delphi-Clinic
منبع:
www.barnamenevis.org
|