PDA

View Full Version : برنامه نویسی تحت شبکه - اصول اولیه



top7news
چهارشنبه 14 فروردین 1387, 12:23 عصر
سلام به دوستای گل
راستش منم مثل بعضی دیگه از دوستان میخوام برنامه نویسی تحت شبکه رو شروع کنم
ممنون میشم یه سری اصول کلی رو برام بگین
میدونم سئوالم خیلی کلیه
منم جواب با جزئیات نمی خوام
میخوام بدونم چه طور میشه ارتباط سرو و کلاینت های تحت شبکه رو برقرار کرد
و چه طور میشه برنامه نویسی تحت سرو ر کرد
ممنون از همه

Alireza_Salehi
چهارشنبه 14 فروردین 1387, 13:45 عصر
بستگی داره چی کار می خواهید بکنید!

اگر صرفا قراره کلاینت ها از یک دیتابیس مرکزی استفاده کنند برقراری ارتباط به سادگی تنظیم کانکشن استرینگ ها انجام میشه(البته با درنظر گرفتن برخی جزئیات).

اگر چند دیتابیس مرکزی دارید و باید همزمان شوند باید با روش های توزیع پایگاه داده آشنا بشید.

اگر بحث دیتابیس مطرح نیست و سرور خدماتی به کلاینت ها ارائه می کند روش ها و باید و نباید های مختلفی وجود دارد مثل :
بستر ارتباطی مانند WAN، LAN، ....
پروتکل ارتباطی TCP/IP ، ....
روش های شناسایی کلاینت و سرور ...
ابزارهای برنامه نویسی جهت ارتباط در شبکه مثل وب سرویس، سوکت و ...

سوال شما خیلی کلیه بهتره یا صورت مسئله را طرح کنید یا جزئیات بیشتری از هدفتان را تشریح کنید چون روش های زیادی برای ارتباط وجود دارد که برای شرایط متفاوتی طراحی و بهینه شده اند.

مثلا در بعضی موارد مپ کردن پوشه ای از سرور و قرار دادن میانبر برنامه روی کلاینت تمام کاری است که برای ارتباط باید انجام شود!

razavi_university
چهارشنبه 14 فروردین 1387, 14:40 عصر
این موضوع که می خواهید خیلی کلیه حتی همون ارتباطش (نوع ارتباط، پروتکلش و ...)
در قسمت نمونه برنامه ها (http://barnamenevis.org/forum/showthread.php?t=64210) یک برنامه (http://barnamenevis.org/forum/showpost.php?p=444892&postcount=41) برای اینکار هست.
کتاب های زیادی رو هم برای اطلاعات بیشتر میتونین بخونین
مثلا برنامه‌نویسی شبکه در محیط NET. (http://www.mftsite.com/frmbook.aspx?id=102&categoryid=-1)ترجمه مولاناپور
کتاب لاتین هم تا دلتون بخواد تو اینترنت پیدا میشه

hdv212
چهارشنبه 14 فروردین 1387, 14:42 عصر
اگه میخواهید برنامه نویسی تحت شبکه رو یاد بگیرید، ابتدا باید پروتکل های مختلف شبکه رو بشناسید که چطور کار میکنن و عملکردشون چطوریه، دو پروتکل مهمی که معمولا مورد استفاده قرار میگیره TCP/IP و UDP هست، که پروتکل UDP به علت اینکه نیاز به باز و بستن Connection نیست، پیشنهاد نمیکنن که ازش استفاده کنید، چون نفوذ به سیستمها از این طریق راحتتر انجام میشه(این در حالت کلی بود).
ولی پروتوکل TCP/IP که معمولا هم از همین استفاده میکنن، نیاز به باز و بسته کردن Connection بین دو کامپیوتر داره، ساختار برنامه های شبکه ای که مبتنی بر TCP/IP نوشته میشه، اینه که برنامه ی Listener برروی سرور در حال اجراست و کارش هم همانطور که از نامش مشخصه گوش دادن به Connectionهایی است که به طرفش میاد، وقتی نرم افزار کلاینت میخواد به سرور متصل بشه، یک token به نرم افزار سرور مبنی بر اینکه میخواد با سرور ارتباط برقرا کنه میفرسته، نرم افزار سرور هم این token رو دریافت میکنه و در صورت موافقت، Connection باز و ارتباط برقرار میشه، به این صورت دو کامپیوتر میتونن با هم ارتباط client/server ای از طریق شبکه داشته باشن، یک مثال خوب از برنامه ی چت تحت شبکه رو میتونی از اینجا (http://www.codeproject.com/KB/IP/TCPIPChat.aspx) بخونی که از پروتوکل TCP/IP استفاده کرده.
برای اطلاعات بیشتر میتونی کتاب C Sharp Network Programming از انتشارات Sybex رو بخونی.

RED-C0DE
پنج شنبه 15 فروردین 1387, 17:35 عصر
پروتکل UDP به علت اینکه نیاز به باز و بستن Connection نیست، پیشنهاد نمیکنن که
ازش استفاده کنید، چون نفوذ به سیستمها از این طریق راحتتر انجام میشه

درسته این مطالب شاید جاش اینجا نباشه ولی برای تکمیل حرفای دوستمون، باید گفت که UDP هم موارد استفاده متعدد خودش رو داره ...اینکه پیشنهاد می کنن که ازش استفاده نکنن!!! و یا نفوذ به سیستمها از این طریق راحتتر انجام می شه!!! به قول شما، رو واقعا متوجه نمی شم!!اگه ممکنه توضیح بیشتر بدید...
UDP یک پروتوکل غیر اتصالگراست و همون کاری که نامه رسان برای تحویل نامه به مقصد انجام می ده رو انجام می ده بر خلاف TCP که یک ارتباط متصل دوطرفه(اتصالگرا) و ایمن مانند یک مکالمه تلفنی رو برقرار می کنه...
فرق مهم این دو، در شیوه اتصال (اتصال گرا و غیر اتصال گرا) و امنیت و تضمین صحت اطلاعات انتقالی ست...به این ترتیب که UDP انتقال ایمن بسته های اطلاعاتی رو تضمین نمی کنه بر خلاف TCP
همچنین از UDP برای انتقال اطلاعات در حجم زیاد (Big Packet) استفاده می شه...


http://www.faqs.org/rfcs/rfc768.html

http://www.faqs.org/rfcs/rfc793.html

top7news
شنبه 17 فروردین 1387, 04:28 صبح
با تشکر از همه دوستای عزیز که زحمت کشیدین و توجه کردین
نرم افزاری که من میخوام طراحی کنم
در اصل یه نرم افزار مدیریت آزمایشگاه هستش
که بر روی سرور دیتا بیس قرار داره
و کلاینت ها باید توانای read , write بر روی اونو داشته باشن
یه سری اطلاعات جزیی در این مورد پیدا کردم
مشکل اصلی من اینه که
متاسفانه آگاهی هام هر کدوم نصفه نیمه است.ممنون میشم با یه مثال
واسم طریقه کار بر روی شبکه این پروژه رو توضیح بدین
با تشکر فراوان

Alireza_Salehi
شنبه 17 فروردین 1387, 06:57 صبح
با تشکر از همه دوستای عزیز که زحمت کشیدین و توجه کردین
نرم افزاری که من میخوام طراحی کنم
در اصل یه نرم افزار مدیریت آزمایشگاه هستش
که بر روی سرور دیتا بیس قرار داره
و کلاینت ها باید توانای read , write بر روی اونو داشته باشن
یه سری اطلاعات جزیی در این مورد پیدا کردم
مشکل اصلی من اینه که
متاسفانه آگاهی هام هر کدوم نصفه نیمه است.ممنون میشم با یه مثال
واسم طریقه کار بر روی شبکه این پروژه رو توضیح بدین
با تشکر فراوان
نرم افزار آزمایشگاه جنبه های متفاوتی می تواند داشته باشد، نکته کلیدی مشخص کردن ارتباطات بین کلاینت و سرور هاست،در ساده ترین حالت اگر تنها ارتباطی که مابین کلاینت و سرور ها وجود دارد خواندن ونوشتن در دیتابیس است، یک برنامه می نویسید و در کلاینت ها کپی می کنید تنها عامل ارتباط هم کانکشن استرینگ دیتابیس خواهد بود که در کلاینت ها تنظیم می شود.

hassan razavi
شنبه 17 فروردین 1387, 07:43 صبح
من تا پست شماره 6 فکر میکردم که منظور دوستمون برنامه نویسی تحت شبکه هستش ولی حالا فکر می کنم که منظورشون برنامه نویسی پایگاه داده تحت شبکه هستش.
اگه درسته لطفا تائید کنید تا راه حلهای مناسب معرفی بشه.

MOSTAFANAVVAB
شنبه 17 فروردین 1387, 08:04 صبح
من کتاب جناب آقای جعفر نژاد قمی را خوندم و ان را پیشنهاد می کنم

top7news
پنج شنبه 29 فروردین 1387, 01:18 صبح
سلام خدمت دوستای گلم
شرمنده یه مدت نبودم که تاپیک و چک کنم
خدمت جناب رضوی هم عرض کنم که تقزیبا بعله
برنامه نویسی پایگاه داده ها تحت شبکه است
ممنون میشم راهنمایی هاتونو ازم دریغ نکیند