دسامبر 8, 2018 Mostafa بدون دیدگاه

اگر دنبال برنامه نویس برای ساخت افزونه ،قالب،سایت،برنامه ویندوز،اپلیکیشین اندروید،ربات تلگرام و.... هستید ،سفارش برنامه نویسی را مطالعه نمایید.

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

مفهوم سوکت پروگرامینگ:
سوکت از مجموعه ای بنام port+ip تشکیل شده که این دو با هم و بصورت مکمل هم در آدرس یابی تحت شبکه به برنامه های کاربردی کمک می کنند که هر برنامه تنها packet ارسالی خود را و تنها از آدرس مورد نظرش بدست آورد یا به عبارت دیگر علاوه به بحث رساندن بسته به کامپیوتر مقصد رساندن آن به برنامه کاربدی مربوطه نیز لازم است.

مفهوم :IP
همانگونه که مطلع هستید در بحث شبکه کردن کامپیوترها چه در مقیاس LAN وچه مقیاس های گسترده هر کامپیوتر باید دارای آدرس مشخص و منحصر به فردی باشد تا قابل آدرس دهی و دستیابی در شبکه باشد این آدرس دهی از طریق شماره منصر به فردی(در شبکه LAN)که آن را IP می نامیم قابل دستیابی است البته این آدرس دو نوع دارد نوع اولIP ورژن۴که اکنون استفاده می شودو ۳۲ بیتی است ولی ورژن جدید آن که برخلاف ورژن۴دارای ۱۲۸بیت آدرس است.
همانگونه که گفته شد برای دسترسی به کامپیوتردر شبکه وجود آدرس IP ضروری است.

مفهوم Port:
در هر قسمت IP آدرس دهی کامپیوترها را بررسی کردیم ولی هنوز یک مشکل وجود داردوآن اینکه در هنگام رسیدن بسته اطلاعاتی بر روی کامپیوتر مقصد چگونه از بین چند برنامه کاربردی در حال اجرا برنامه مورد نظر را انتخاب کنیم برای رفع این معضل از مفهوم Port استفاده می کنیم که به علت تنوع وتعدد Port ها هر برنامه از پورت مخصوصی استفاده می کندو بنابراین بسته اطلاعاتی رسیده بر روی Port خاص آن قرار می گیرد تا برنامه کاربردی مورد نظر آن را دریافت و پردازش کند پس Port حکم تست نهایی آدرس را دارد که در صورت نبود دوباره بسته بدون استفاده خواهد ماند.

کاربرد سوکت:
شاید شما تا کنون به شبکه های محلی برخورد داشته اید و یا برنامه ای کاربردی که بین این کامپیوتر ها برقرار است مفهوم سوکت در این پروژه بیشتر برای شبکه های محلی در نظر گرفته شده است و بحث ClineوServer مطرح شده است اگر سیستم یکپارچه پانگی را دیده باشید از همین شیوه استفاده می کنند که کامپیوتر های شعب از طریق شبکه به کامپیوتر مادر(Server) متصل می شوند(از طریق همانPort+IP) سپس درخواست هایی از کامپیوتر صادر می نمایند که کامپیوترمادر باید آنهارا پردازش وجواب دهد در چنین موقعیتی لازم است که با توجه به تعدد درخواست ها از جاهای مختلف امنیت حفظ شود و به عبارت دیگر در خواست ها و جواب ها مختلط نشود و هر در خواست به طور جداگانه بررسی و جواب داده شود که برای این منظور از Threed (نخ) استفاده می شود.

Threed (نخ):
در سیستم Server-Cline از آنجایی که تعداد زیادیCline به یک کامپیوتر مادر(Server)متصل می شوند و همچنین از سیستم های یکپارچه به یک Port خاص و برنا مه های کاربردی خاص متصل خواهند شد لذا لازم است امنیت تراکنش ها حفظ شودو درخواست ها و پردازش ها مرتبط باشند مثلا در خواست برداشت پول از حسابس ودرخواست واریز به حسابی دیگربا هم مختلط نشوندبرای این منظور به هر تراکنش یا به عبارت دیگر به هر Cline یک Threed (نخ)نسبت می دهیم که عملیات آن Cline فقط از طریق همان نخ انجام می شودکه در این صورت مختلط شدن کارهای کاربران مختلف غیر ممکن خواهد بود و در صورتی که اشتباهی درمورد کاربران خاصی اتفاق بیا فتد فقط عملیات Threed خاص آن را بررسی خواهیم کرد یعنی با این پیمانه بندی خطا یا بی نیز تسریع می شودو امنیت به طور چشمگیری افزایش خواهد یافت.

سوکت در زبان برنامه نویسی دلفی:
همانگونه که مطلع هستید زبان دلفی یک زبان ویژوال است که مانند سایر زبان های ویژوال از یک سری کامپوننتهای آماده استفاده می کند یعنی نیازی به کد نویسی تمام کامپوننت ها نمی باشد یا به عبارت دیگر بعضی از تکه کدها به صورت آماده وجود دارند و ما تنها بصورت یکجا و کلاس بندی شده از آنها استفاده می کنیم در مفهوم سوکت پروگرامینگ نیز همین گونه است یعنی زبان برنامه نویسی یکسری از کلاس ها و کامپوننت های مورد نیاز رابرای ما تعبیه کرده است به عنوان مثال برای بررسی و مشاهده این کامکپوننتها می توان به سر برگindy cline وindy server از پالت نوار ابزار رجوع کرد و این کلا سها را مشاهده نمود که در آنها ابزار(کامپوننت ها)متنوعی جهت انواع ارتباط در سوکت و کنترل ارتباط و حفظ امنیت و سایر نیازها یک برنامه سوکت در نظر گرفته شده است پالت(سر برگ)indy cline برای کامپوننت های کاربران و پالت indy server برای کامپوننت های کامپیوترسرور در نظر گرفته شده که نیاز ما را به ریز کد نویسی(از ابتدا)بر طرف کرده و دادا های دریافتی و ارسالی آنها را درماژولهای جدا گانه ای بررسی خواهیم کردو در صورت نیاز از توابع این کامپوننتها جهت ارسال جواب استفاده خواهیم کرد.
برنامه کاربردیCline :
این برنامه که به تعداد های متعددی می تواند با یک سرور ارتباط داشته باشد و عملیات هر کدام بطور جداگانه مورد بررسی قرار می گیرد وجواب مخصوص به هر کدام به طور جداگانه و منحصر به فرد به برنامه Cline مورد نظر پس داده می شود این برنامه که برای پروژه سوکت درس شبکه نوشته شده بسیار ساده وفقط دارای دو Edit Box برای دریافت دو عدد(ابتدا به صورت رشته)و سپس ارسال آن برای سرور و دریافت جواب سرورونمایش آن در یک Edit Boxدیگر است برای این منظور ابتدا باید با کامپیوترسرور و برنامهServerارتباط بر قرار کرد برای این منظور از ابزار (کلاس)Id Tcp Cline موجود در پالت indy Cline کمک گرفته و آن را به فرم برنامه اضافه می کنیم اکنون برای اتصال به سرور باید آدرس Ip کامپیوتر Server وهمچنین آدرسPort برنامه کاربردی طرف مقابل را وارد کنیم تا ارتباط بتواند برقرار شود و پس از ای مرحله لازم است خاصیت Connect این ابزار به ture تغییر پیدا کند و این گونه ارتباط برقرار خواهد شد البته ممکن است با عدم جواب از طریق سرور مواجه شده وارتباط برقرار نشود پس لازم است که تغییرات وصل شدن (Connect)یا نشدن(dis connect) را از رویدادهای مربوط به شی مورد نظر بررسی می کنیم(منظورeventهای آن شی می باشد)بعضی مواقع لازم است برای وصل شدن چندین بار خاصیتconect را Tureکنیم بعد از اتصال و اطمینان از اتصال باید داده های اساسی خود را بصورت متنی (Text)برای برنامه سرور ارسال کنیم که برای این منظور از منو Writeاستفاده میکنیم ومتن مورد نظر را ارسال می کنیم که در اینجا شامل دو عددد برای مقایسه است و به منظور جدا سازی دو عدد ما در بین این دو یک علامت بعلاوه(+)درج مینماییم پس ارسال دادها بدین گونه بودکه شرح دادیم و حال آنچه می ماند دریافت دادها از برنامه سرور میبا شد برای این منظوریک Timer از کلاس Ttimerبر روی فرم قرار می دهیم که هر۲/ثانیه پورت ورودی را چک کند و در صورت دریافت داده آن را در Edite box سوم که به این منظور تعبیه شده نمایش دهد و در پایان کار نیز باید این ارتباط قطع شود که برای این منظوراز منوی disconnect استفاده می شود.

برنامه کاربردی سرور:
این برنامه در حقیقت همان پردازشگر مرکزی اطلاعات رسیده از طرف ‍Clinet ها می باشد این برنامه برای هر Clinetتقاضای آن را بررسی کرده و به آن Clinet پاسخ می دهد همانگونه که قبلا گفته شد لزوم جدا سازی تراکنش ها از هم و همچنین امنیت این اطلاعات به ماژولالیتی در این برنامه تأکید دارد که ازthreeding به این منظور استفاده می شود این پروشه بر روی فرم خود یک Id Tcp server دارد که خاصیت port آن بروی پورت مورد نظر متمرکز می شود همچنین یک List برای Client های فعال ویک لیست برای وصل و قطع شدن کلاینت ها و سابقه آنها وجود دارد هرClinet به محض متصل شدن یه اشاره گر Threed آن تعریف می کند که سابقه آن در این نخ نگهداری می شود
برای استفاده سیستم چند نفر ابتدا یکThreed poolدرفرم اضافه کرد و خاصیتThreedازId tcp i
به نام ان تغییر میدهیم در این صورت برای هرClinetجدیدی که به سرور متصل می شود نخ(Threed) جدا گانه در نظر گرفته می شود برای اینکه هرClinent تنها به Threed دسترسی داشته باشند باید از یک اشاره گر به Threed استفاده کرد که در غیر این صورت سابقه هرClient قابل بررسی خواهد بود اما محاسبات مربوط به اعداد رسیده در مارژال (توابع)جداگانه بررسی شده و جواب صادر میشود برای این منظور در متدone xcuit مربوط به Id Tcp ip هر گاه پیغامی دریافت شد پیغام خوانده شده (به وسیله متد Read)سپس به تابعی برای جدا سازی اعداد فرستاده می شود در این تابع اعداد جدا شده (چون به صورت یک رشته می باشند که با عملگر + از هم جدا شده اند )و سپس مقایسه انجام میگیرد و عدد بزرگتر به عنوان جواب برClientفرستنده ارسال می شود برای این منظور حتما باید از توابع استفاده کرد چون ممکن است چندClient بطور همزمان تقاضای مقایسه داشته باشند در این صورت درهر نخ (Theerd) بطور جداگانه تابع مذکور فراخوانی می شود و در حقیقت همروندی ایجاد شده و همچنین از تداخل وتلاقی اعمال کاربران مختلف جلو گیری خواهد شد.
امنیت در پروژه:
در این پروژه برای اینکه بتوانیم تک تک پیغام ها و جوب ها را بررسی کرده تا در صورت بروز خطا آنها را باز بینی کنیم برای هر پیغام یک شماره منحصر به فرددر نظر گرفته شده و همچنین جواب ها نیز به همین منوال که این شماره منحصر به فرد از برنامه سرور تقلضا می شود پس کلیه اطلاعات جابه جا شده دارای شماره بوده وقابل رهگیری و پیگیری است حتی جواب های Server به کلاینت ها دارای این شماره خستند همچنین شمارهClient های متصل به سرور و با تاریخچه آنها موجود است و حتی در صورت dis Connect و متصل شدن دوباره هر کاربر شماره جدیدی به آن تعلق خواهد گرفت تا سوابق آن در مراحل قبل و با نام قبلی محفوظ بماندپس در بخش نمایش پیغام ها و شماره پیغام ها شماره کاربر نیز قید شده که در صورت نیاز می توان سوابق آن را باز خوانی و بررسی نمود.
چکیده:
این پروژه که برای درس شبکه طراحی و اجرا شده هدف آن ارتباط دو برنامه کاربردی از طریق soucket می باشد بطوری که این در برنامه توان انتقال اطلاعات را داشته باشند برای این منظور برنامهClient دو عدد را به برنامه سرور فرستاد و برنامه سرور با مقایسه این دو عدد٬عدد بزرگتر را به برنامه تقاضا دهنده پس می دهد البته قابل ذکر است که همزمان چند برنامه Client می توانند با Server در تماس بوده وتبادل اطلاعات داشته باشند و قسمت دیگری که برای امنیت به آن اضافه نمودهام شامل شماره کاربرهای متصل و سابقه آنها و همچنین شماره منحصر به فرد برای هر پیغام تبادل شده در این پروژه می باشد.


برچسب ها