PDA

View Full Version : نوشتن یک برنامه چت ساده



Sepidar
شنبه 06 تیر 1383, 19:00 عصر
سلام
در این سلسله مقالات سعی خواهم کرد نحوه نوشتن یک برنامه چت ساده را توضیح دهم.

در قسمت اول اصول پروتکل TCP/IP مورد بررسی قرار خواهد گرفت.
قسمت دوم به بررسی کامپاننتهای TClientSocket و TServerSocket می پردازد
موضوع قسمت سوم طراحی یک پروتکل ساده برای تبادل اطلاعات خواهد بود
و بالا خره در قسمت چهارم پیاده سازی این برنامه تقدیم خواهد شد.

قابل توجه اینکه قسمتهای اول و دوم این مقاله در واقع ترجمه های آزادی هستند از مقالات سایت معظم delphi3000.com.

همواره نیازمند نظرات دوستان خواهم بود.

Sepidar
شنبه 06 تیر 1383, 19:05 عصر
قسمت اول، بخش اول: اصول TCP/IP

برای فهم چگونگی نوشتن یک برنامه چت ساده، فکر می کنم یک مقدمه کوچک در باره TCP/IP لازم است.

پروتکل TCP/IP بر سه عنصر زیر استوار است:
- آدرس IPه = IP Address
- نام میزبان = Host Name
- شماره پورت = Port Number

برای فهم هر عنصر یک مثال ساده می زنم. تصور کنید که در یک شهر هستید. در این شهر خیابانهایی وجود دارند که برای دسترسی به ساختمانهای مختلف از آنها استفاده می شود. هر ساختمان آدرسی دارد و بعضی ساختمانها هم اسمهای مشخصی دارند (مانند شمس العماره یا برج میلاد). همچنین در هر ساختمان تعدادی اتاق وجود دارد که با درهایی از هم جدا شده اند. حال ببینیم چگونه می توانیم دراین شهر حرکت کنیم. در ابتدا یک تاکسی صدا می زنیم. سپس به راننده تاکسی آدرس مورد نظر را میگوییم (برای مثال خیابان ولیعصر، پلاک 609). اما اگر بخواهیم به یک ساختمان معروف برویم کافیست به راننده تاکسی اسم ساختمان را بگوییم (مثلا کافی شاپ صدف :mrgreen: ) و راننده تاکسی خودش ما را به این ساختمان خواهد برد؛ چرا که خود راننده تاکسی آدرس این ساختمان را می داند. وقتی که به این ساختمان برسیم، در ساختمان را باز کرده و بعد از آن در اتاق مورد نظر را باز کرده، داخل می شویم. مثال ساده ای بود که در زندگی روزمره زیاد با آن برخورد می کنیم.
در پروتکل TCP/IP هم چیزی شبیه به مثال بالا اتفاق می افتد. در یک شبکه TCP/IP کامپیوترهای متصل به شبکه، مانند ساختمانهای یک شهر هستند: خیابانهای شهر مانند اتصالات TCP/IP و ساختمانهای شهر معادل با کامپیوترهای شبکه که هر کامپیوتر یک آدرس منحصر به فرد دارد (مانند آدرس ساختمانها)
بعضی از ساختمانها هم اسامی خاص دارند (مانند ساختمانهای مهم یک شهر). مثلا وقتی در Internet Explorer آدرسی (مانند www.barnamenevis.org) تایپ می کنیم، خود برنامه به سراغ کامپیوتر معین می رود، چراکه آدرس آنرا می داند. (در حقیقت به خودی خود آنرا نمی داند، بلکه آدرس آنرا از جای دیگری می پرسد، در باره این مساله بعدا بیشتر صحبت خواهیم کرد.)
پورت یک کامپیوتر شبیه یک در یک ساختمان است. در حقیقت پورت دروازه ایست به سرویس ارایه شده توسط کامپیوتر. برای مثال در مورد کام/یوتری که میزبان صفحات وب است؛ شما باید به پورت 80 چنین کامپیوتری متصل شوید تا بتوانید به صفحت وب ارایه شده توسط این کامپیوتر دسترسی داشته باشید. یا مثلا پورت 21 برای FTP Server هاو....
بطور کلی این همه TCP/IP بود. همانطور که می توانید ببینید، کل شالوده اینترنت بر روی این پروتکل بناشده: ساده و موثر...

JavanSoft
یک شنبه 07 تیر 1383, 13:18 عصر
ممنون منتظر بقیه آن هستیم :flower:

Gladiator
پنج شنبه 18 تیر 1383, 12:44 عصر
در مورد اون 2 تا کامپوننت من میتونم ادامه بدم اگر مهندس سپیدار اجازه بده .

ahmad sajjad
جمعه 19 تیر 1383, 18:23 عصر
با سلام خدمت جناب سپیدار و دیگر عزیزان
بحث بدرد بخور و جالبی را شروع کرده اید و مفید فایده برای خیلی ها مثل من خواهد بود.
بنظر من ما همه (البته خیلی از دوستان استاد هستند "من مانند های خودم را می گویم" )به کمک دوست عزیز آقای کرامتی جمع شده ایم تا بتوانیم به هم در اطلاع رسانی و آموزش صحیح کمک کنیم.
نه اینکه با هم بحث کنیم و از مقصود اصلی دور شویم . من فکر میکنم هر کی در هر موردی اگر اطلاعاتی را دراختیار بقیه بده یا اینکه نظری داشته باشه نه اینکه کسی ناراحت میشه بلکه فکرکنم خوشحال هم بشه.
بنابراین از جناب سپیدار تقاضا دارم که بحث را ادامه بدهند.
با تشکر

Sepidar
شنبه 20 تیر 1383, 12:39 عصر
دوستان سلام
علت اینکه نتونستم مقاله روادامه بدم اینه که در این 3 هفته اخیربنده یک دور دور ایران رو گشتم.
درمورد TCP/IP اجازه بدید خودم تمومش کنم.
اما اگه زحمت ساکتها روگلادی بکشه خیلی عالی میشه.
اوچیک همه بروبچ هم هستیم :)

s_omid
شنبه 20 تیر 1383, 13:30 عصر
مشتاقانه منتظر ادامه بحث هستیم.
با تشکر

Gladiator
شنبه 20 تیر 1383, 21:50 عصر
با سلام ؛

برای ادامه پیشنهاد میکنم بروی کامپوننتهای IdTCPServer و IdTCPClient از مجموعه کامپوننتهای Indy بحث کنیم .

من این مبحث رو ادامه میدم .

Gladiator
شنبه 20 تیر 1383, 22:41 عصر
برادرا توجه کنید :

<font FACE="Arial" SIZE="2">
<p ALIGN="left">Indy is different from other socket components with which you
may be familiar. If you have never worked with other socket components, you will
find Indy very easy as Indy operates in a fashion that you expect. If you have
worked with other socket components, please forget what you know. It will only
hinder you and cause you to make false assumptions.</p>
</font>

مهدی کرامتی
شنبه 20 تیر 1383, 23:02 عصر
برادر گلادیاتور، برای تفکیک موضوع ها توصیه میشود یک تاپیک جدید باز کنید و موضوع Indy را در آن دنبال کنید. سپس آدرس تاپیک تان را برای من PM کنید تا به بخش مقالات منتقل شود.

Gladiator
شنبه 20 تیر 1383, 23:33 عصر
چشم مهندس ؛

همه چیز درباره Indy