PDA

View Full Version : نوشتن نرم افزار تحت شبكه LAN



VB.SOS
یک شنبه 17 آذر 1387, 23:11 عصر
سلام خدمت تمامي دوستان
اگه درباره تيتر اين تاپيك جستجو كرده باشين ميبينين كه با اين مطالب موجود نميشه يه نرم افزار واقعي تحت شبكه نوشت.
فكر كنم نوشتن يه برنامه تحت شبكه دغدغه خيلي ها باشه. چون موضوع يكم از محيط vb خارج ميشه و به مفاهيم و تظيمات شبكه و سخت افزار و ... مربوط ميشه. همچنين بحث يكم تئوريك.

من مطمئنم كه خيلي از دوستاني كه اينجا فعاليت دارن تا حالا برنامه هايي از قبيل برنامه دبيرخانه، چت روم و غيره نوشتن و تجربه كافي دارن و ميتونن آموزش لازم رو به بقيه بچه ها بدن.

من خواستم تو اين تاپيك آموزش لازم براي نوشتن نرم افزار واقعي و كاربردي تحت شبكه توسط بچه ها قرار بگيره تا يه مرجع اصلي براي اين كار باشه.
به اميد اين كه استقبال خوبي از اين تاپيك بشه :خجالت:.

براي اين كه از مسير خارج نشيم من بحث براي نوشتن اين چنين برنامه اي رو پيشنهاد مي كنم:
1- يك شبكه LAN با حدود 150 تا كامپيوتر داريم
2- اين برنامه لزوما فقط سروكارش با ديتابيس نيست. ميتونه يه چت روم باشه. يا اين كه موتور ديتابيس اختصاصي داشته باشه (مثل Outlook).
3- تو اين برنامه حتما بايد از Winsock استفاده بشه (يا كامپونت يا از كلاس همسانش براي رد شدن از فايرووال).
4- تو اين برنامه صرفا ثبت اطلاعات مطرح نيست و برنامه محسبات و پردازشهاي زيادي ممكنه انجام بده.
5- برنامه داراي كاربرهاي ثبت شده هست و هر كس از هر كامپوتري ميتونه وارد حساب كاربريش بشه.
6- راه اندازي برنامه كار ساده ايه و نياز به متخصص نداره و كافيه كه كاربر تقريبا حرفه اي باشه.

خواهش مي كنم به جزئيات بپردازيد و از كلي گويي دوري كنين.

هدف دقيقا اينه كه كاربري كه به خود VB مسلط هست و با مفاهيم شبكه و پروتكل هاي مربوطه آشناست بتونه فقط و فقط با خوندن اين تاپيك يه برنامه تحت شبكه كامل بنويسه
(بچه هاي مديريت به اين جمله ميگن ويژن)


:تشویق::تشویق::تشویق: ممنون از تك تك كسايي كه تو اين كار همكاري ميكنن :تشویق::تشویق::تشویق:

mpmsoft
دوشنبه 18 آذر 1387, 09:34 صبح
يك شبكه LAN با حدود 150 تا كامپيوتر داريم


بله امکانش هست منتها شبکه باید بصورت Domain باشه به دلیله اینکه استفاده از Workgroup سرعت خیلی کمتری نسبت به Domain داره

در بحث شبکه به این مسئله حتما دقت کنید

VB.SOS
دوشنبه 18 آذر 1387, 09:53 صبح
با تشكر از توجهتون.
ممنون ميشم اگه درباره Domain و Workgtoup توضيح بدين

VB.SOS
دوشنبه 18 آذر 1387, 12:58 عصر
براي دريافت كتاب هاي مربوط به شبكه به تاپيك كتابهاي الكترونيك رجوع كنيد:
http://barnamenevis.org/forum/showthread.php?t=111558

mpmsoft
دوشنبه 18 آذر 1387, 13:42 عصر
فرض بفرمایید یک شبکه با 150 کلاینت دارید
و شبکه شما مبتنی بر Workgtoup هست

حالا می خواهید یک پکت برای کامپیوتری با نام xyz بفرستید

بنابراین این پیغام به 150 کامپیوتر فرستاده می شه تا کامپیوتر مورد نظر پیدا بشه و جواب بده

ولی در شبکه های مبتنی بر Domain به این صورت نیست

اوبالیت به بو
دوشنبه 18 آذر 1387, 15:15 عصر
4- تو اين برنامه صرفا ثبت اطلاعات مطرح نيست و برنامه محسبات و پردازشهاي زيادي ممكنه انجام بده
من دو بخشش مي كنم:

تو اين برنامه صرفا ثبت اطلاعات مطرح نيست

بايد از يك Thread جداگانه براي برنامه استفاده بشه تا برنامه در صورت اختلالات شبكه از كار نيوفته. همچنين براي اين قسمت از برنامه كه فرمودين يك Listener بايد باشه كه به يك IP خاص گوش بده تا در صورتيكه Client شماره n اگر تغييري در برنامه ايجاد كرد، در تمام Client ها اين تغيير اعمال بشه. پورت مورد نياز براي اين كار 5051 هستش.

برنامه محسبات و پردازشهاي زيادي ممكنه انجام بده

مشخص نيست كه چه كاري بايد انجام بده؟ منظور از پردازش چيه؟ {فعلاًپاسخش زياد مهم نيست}

5- برنامه داراي كاربرهاي ثبت شده هست و هر كس از هر كامپوتري ميتونه وارد حساب كاربريش بشه.
يه Login ساده هستش. اگر مي خواين كمي برنامه قشنگ تر بشه مي تونيد همون تكنيك سوال 4 رو استفاده كنيد تا ليست كاربران Login شده در يك Grid يا ... با IP هاشون نمايش داده بشه.

VB.SOS
دوشنبه 18 آذر 1387, 21:55 عصر
دوستان من فكر ميكنم كه بحث رو بايد از اول اول شروع كرد:
جناب M8SPY براي كاركردن يه نرم افزار تحت شبكه روش زير پيشنهاد ميكنن:


البته این روش فقط در شبکه هایی که کامپیوتر های موجود در اون از IP های Valid استفاده می کنند امکان پذیره . که یه شبکه داخلی LAN رو هم شامل میشه ...

1 - برنامه سرور رو روی کامپیوتر سرور نصب می کنیم .
2 - توسط برنامه سرور ، برنامه کلاینت رو میسازیم . (یعنی : فایل نصبی برای کلاینت های ایجاد می کنیم که جزئیات در اون موجود باشه . مثلاً سرور IP خودش رو هنگام ایجاد فایل کلاینت ها درون فایل می نویسه .)
3 - حالا فایل ایجاد شده رو به کلاینت های منتقل می کنیم و دونه دونه روی اونها نصب می کنیم .
4 - برنامه کلاینت قابلیتی داره که باعث نمایش IP مربوط به کلاینت های در خود کلاینت ها میشه .
5 - IP به دست آمده از کلاینت ها رو دونه دونه یادداشت می کنیم .
6 - به سرور مراجعه کرده و کلاینت ها رو توسط IP که در اختیار داریم Active می کنیم .
7 - بعد از اتمام اتصالات نرم افزاری بین Server و کلاینت ها ، به ارسال مشخصات کلاینت ها برای سرور می پردازیم .

این روش در شبکه هایی که حداکثر از 20 تا کلاینت برخوردار باشند امکان پذیره !

موفق باشید

اگه سروران گرامي اجازه بدن روي اين روش مطالعه كنيم. اساتيد لطف كنن هر مرحله رو با توانايي هاي VB توضيح بدن

ممنونم

مهران رسا
سه شنبه 19 آذر 1387, 23:47 عصر
يك Listener بايد باشه كه به يك IP خاص گوش بده

وظیفه Listener ها گوش دادن به یک Port خاص هست . در غیر اینصورت امکان شناسایی IP درخواست کنندگان وجود نخواهد داشت .

VB.SOS
چهارشنبه 20 آذر 1387, 07:41 صبح
جناب M8SPY اگه مراحلي كه ذكر كردين رو مرحله به مرحله شرح بدين خيلي از سوال ها رفع ميشه.
اگه هر مرحله رو تك تك شرح بدين امكان بحث اعضا روي يك مرحله خاص هم به وجود مياد. فكر كنم اين كار ميتونه خيلي مفيد باشه

ممنون از توجه شما

VB.SOS
پنج شنبه 21 آذر 1387, 22:09 عصر
دوستان انتظار همكاري بيشتري داشتم. اي كاش سرعت پرداختن به تاپيك بيشتر بود.

اين تاپيك ميتونه خيلي راه گشا باشه

.:KeihanCPU:.
پنج شنبه 21 آذر 1387, 22:59 عصر
یه نگاهی به سورس موجود در پست زیر بندازید.
مطمئن باشید کلی مشکلات حل میشه.
اگرم سوالی هست بنده در خدمتم.
http://barnamenevis.org/forum/showpost.php?p=647395&postcount=305

r0ot$harp
پنج شنبه 21 آذر 1387, 23:04 عصر
دوستان من فكر ميكنم كه بحث رو بايد از اول اول شروع كرد:
جناب M8SPY براي كاركردن يه نرم افزار تحت شبكه روش زير پيشنهاد ميكنن:



اگه سروران گرامي اجازه بدن روي اين روش مطالعه كنيم. اساتيد لطف كنن هر مرحله رو با توانايي هاي VB توضيح بدن

ممنونم


جناب M8SPY اگه مراحلي كه ذكر كردين رو مرحله به مرحله شرح بدين خيلي از سوال ها رفع ميشه.
اگه هر مرحله رو تك تك شرح بدين امكان بحث اعضا روي يك مرحله خاص هم به وجود مياد. فكر كنم اين كار ميتونه خيلي مفيد باشه

ممنون از توجه شما


دوست عزیز در مورد اینکه یه توضیحی خواسته بودین :


موارد 1 - 2 - 3 نیاز به توضیحی نداره واضح می باشد .



در مورد , مورد 4 :

شما از طریق متدی به نام Winsock1.LocalIP و Winsock1.LocalPort می تونید IP و PORT دستگاه که برنامه روش اجرا می باشد پیدا کنید .




در مورد , مورد 5 :

من با این مورد موافق نیستم که یادداشت کنیم . اگر آیپی سرور Valid باشه شما می تونید در برنامه کلاینت ها وقتی برنامه اجرا شد سریعا به سرور متصل بشه .



در مورد , مورد 6 :

در Winsock یک Event داریم به نام Winsock1_ConnectionRequest . کار این قسمت اینه که وقتی درخواستی مبتنی بر قبول ارتباط فرستاده می شه این قسمت اونو از طریق کد زیر قبول و ارتباط رو برقرار می کنه.


Winsock1.Accept requestID



در مورد , مورد 7 :

در این مورد شما با استفاده از متد Winsock1.SendData اطلاعات خود را از کلاینت به سرور می فرستین .





باتشکر احسان

مهران رسا
جمعه 22 آذر 1387, 19:02 عصر
در مورد , مورد 5 :

اگر آیپی سرور Valid باشه شما می تونید در برنامه کلاینت ها وقتی برنامه اجرا شد سریعا به سرور متصل بشه .


لطفاً در این مورد کمی توضیح بدید .

D32.00110
جمعه 22 آذر 1387, 20:41 عصر
عزیز فکر کنم این مشکل حل شده است و تو فروم هم در موردش بحث شده برنامه هم زیاده منم اون زمون پروژه کاردانیم یه همچین چیزی بود که 100 تا کلاینت رو ساپورت میکرد البته بیشتر هم میشد ولی امتحان نکرده بودم ...
شما مشکلتون کجاست ؟؟؟ :متفکر:


[B]
...
من با این مورد موافق نیستم که یادداشت کنیم . اگر آیپی سرور Valid باشه شما می تونید در برنامه کلاینت ها وقتی برنامه اجرا شد سریعا به سرور متصل بشه .
...

بله به این طریق خیلی راحت است ... ولی برنامه من اگر آیپی سرور Valid هم نبود به طور اتوماتیک پیدا میکرد ...

VB.SOS
جمعه 22 آذر 1387, 22:55 عصر
بچه هاي عزيز فكر كنم بايد چند تا مورد رو بگم:
1- هدف من از اين تاپيك حل مشكلات شخصي نبود. خواستم مرجعي وجود داشته باشه تا كساني كه مي خوان براي اولين بار برنامه تحت شبكه بنويسن (مثل خودم) بهش مراجعه كنن.

2- من شرايط برنامه رو خيلي كلي گفتم و منظورم برنامه خاصي نبود

3- هدفم اين بود كه كسي كه ميخواد برنامه تحت شبكه بنويسه از سير تا پياز رو بتونه اينجا پيدا كنه (اين معنيش اين نيست كه خودش زحمت نكشه). يعني بتونه برنامه نويسي تحت شبكه رو اين جا ياد بگيره. مثل نحوه نصب برنامه هاي تحت شبكه. يا مثلا اين كه ايا بايد دو تا برنامه كاملا مجزا و تو پك هاي جدا براي سرور و كلاينت ارائه بشه يا ... .

من انتظار داشتم (و دارم) كه دوستاني كه برنامه تحت شبكه ارائه دادن بيان و از پايه روش نوشتن اين برنامه ها رو بيان كنن.

از همه‌ي عزيزان ممنونم

مهران رسا
شنبه 23 آذر 1387, 16:34 عصر
دوستان عزیز ، D32.00110 و sanaz13x ؛ لطفاً در مورد راه حل هاتون توضیح بدین .ممنون .

VB.SOS
شنبه 23 آذر 1387, 22:06 عصر
من قول ميدم اگه اين تاپيك به نتيجه دلخواه برسه يه pdf جامع در اين مورد بنويسم كه با اين جمله شروع بشه:
برنامه ي ويژوال بيسيك رو اجرا كنيد. يك پروژه جديد ايجاد كنيد:قهقهه::قهقهه::قهقهه::قه هه::قهقهه:
يعني خيلي مقدماتي تا خيلي پيشرفته شايد صد صفحه:متفکر::متفکر:

mpmsoft
شنبه 23 آذر 1387, 22:25 عصر
در مورد , مورد 5 :

اگر آیپی سرور Valid باشه شما می تونید در برنامه کلاینت ها وقتی برنامه اجرا شد سریعا به سرور متصل بشه .



لطفاً در این مورد کمی توضیح بدید .


کاملا واضح هست وقتی کامپیوتر مرکزی یک آی پی ثابت داشته باشه که Valid باشه می تونید بوسیله آی پی و پورت از راه دور به کامپیوتر مرکزی وصل بشید

مثال :

کامپیوتر مرکزی آی پی ثابت داره 85.165.1.133 و پورت فرضا 2555 رو باز گذاشتید و winsock درحال listen کردن هست

حالا شما به عنوان کلاینت می خواهید به کامپیوتر مرکزی متصل بشید فقط کافی هست آی پی و پورت رو وارد کنید و connect بشی


اگر می خواهید موضوع رو کمی باز تر کنید می تونید روی router خود nat تعریف کنید

senator_aka
یک شنبه 24 آذر 1387, 00:09 صبح
دوستان برای شروع بهتر نیست که اول اصطلاحات را بیان کنید یا نهایتا قبل از بردن نام یک اصطلاح حداقل یه توضیحی قبلش بدین.مثلا همین آی پی های ولید که خودش و شناسایش کلی کار داره و غیره

مهران رسا
یک شنبه 24 آذر 1387, 08:58 صبح
کاملا واضح هست وقتی کامپیوتر مرکزی یک آی پی ثابت داشته باشه که Valid باشه می تونید بوسیله آی پی و پورت از راه دور به کامپیوتر مرکزی وصل بشید

مثال :

کامپیوتر مرکزی آی پی ثابت داره 85.165.1.133 و پورت فرضا 2555 رو باز گذاشتید و winsock درحال listen کردن هست

حالا شما به عنوان کلاینت می خواهید به کامپیوتر مرکزی متصل بشید فقط کافی هست آی پی و پورت رو وارد کنید و connect بشی



آی پی سرور رو از کجا باید تشخیص بدیم که مثلاً 85.165.1.133 هست ؟!!

mpmsoft
یک شنبه 24 آذر 1387, 13:05 عصر
دوستان Statics Valid IP آدرسهایی هستند که بصورت ثابت هستند و باید خریداری بشند در غیر این صورت در زمان اتصال به اینترنت آی پی تغییر می کنه (متاسفانه در ایران به این شکل هست و یکی از دلایل سرعت پایین اینترنت در ping همین دلیل هست زیرا شما وقتی یک ping می زنید این پینگ در چندصد روتر می چرخه)


آی پی سرور رو از کجا باید تشخیص بدیم که مثلاً 85.165.1.133 هست ؟!!

وقتی شما یک آی پی ثابت داشته باشی که تغییر نکنه نیازی نیست شناسایش کنی و یا می تونی DNS Domain روی آی پی تعریف کنی که با زدن مثلا www.webaddress.com بصورت خودکار روتر شما رو هدایت کنه بروی روی آی پی

.:KeihanCPU:.
سه شنبه 26 آذر 1387, 10:23 صبح
آی پی سرور رو از کجا باید تشخیص بدیم که مثلاً 85.165.1.133 هست ؟!!

و در تکمیل این صحبتها:

وقتی شما یک آی پی ثابت داشته باشی که تغییر نکنه نیازی نیست شناسایش کنی و یا می تونی DNS Domain روی آی پی تعریف کنی که با زدن مثلا www.webaddress.com (http://www.webaddress.com/) بصورت خودکار روتر شما رو هدایت کنه بروی روی آی پی
اگر آیپی سرور تغییر کنه چند تا راه داره.
یکیش اینه که هر وقت سرور راه اندازی شد ایپی خودشو در اینترنت مثلا یک فایل با یه ادرس مشخص اپلود کنه.
هر وقت هم که کلاینتها راه اندازی میشن اول اون فیل رو اپلود میکنن و بعد به اون ip کانکت میشن.
فکر کنم واضح بود

r0ot$harp
سه شنبه 26 آذر 1387, 11:42 صبح
و در تکمیل این صحبتها:

اگر آیپی سرور تغییر کنه چند تا راه داره.
یکیش اینه که هر وقت سرور راه اندازی شد ایپی خودشو در اینترنت مثلا یک فایل با یه ادرس مشخص اپلود کنه.
هر وقت هم که کلاینتها راه اندازی میشن اول اون فیل رو اپلود میکنن و بعد به اون ip کانکت میشن.
فکر کنم واضح بود

من هم با دوست عزیزم KeihanCPU موافق هستم . ولی به نظر من باید یه دیتابیس Sql Server در سرور وجود داشته باشه که تمام تغییرات در اون ثبت بشه .



باتشکر احسان

mpmsoft
سه شنبه 26 آذر 1387, 11:50 صبح
من هم با دوست عزیزم KeihanCPU موافق هستم . ولی به نظر من باید یه دیتابیس Sql Server در سرور وجود داشته باشه که تمام تغییرات در اون ثبت بشه .


نیازی نیست به اینکه آی پی در جایی قرار بگیره و یا ذخیره بشه
می تونید یک WebService ساده بنویسید که آی پی سرور رو بصورت رمز شده برگردونه

فقط کافی هست یکم بیشتر فکر کنید

VB.SOS
سه شنبه 26 آذر 1387, 13:05 عصر
بچه هاي عزيز فكر كنم داريم از موضوع منحرف ميشيم

لطفا پست اول بنده رو دوباره بخونيد

مهران رسا
جمعه 29 آذر 1387, 12:59 عصر
وقتی شما یک آی پی ثابت داشته باشی که تغییر نکنه نیازی نیست شناسایش کنی

چه جوری باید همین آی پی ثابت رو تشخیص بدیم ؟
چه جوری با استفاده از VB ، در شبکه LAN آی پی سرور رو پیدا کنیم ؟
چه جوری با استفاده از VB توسط سرور در شبکه LAN ، آی پی کلاینت ها رو پیدا کنیم ؟
پست از D32.00110 (http://barnamenevis.org/forum/member.php?u=13528)


ولی برنامه من اگر آیپی سرور Valid هم نبود به طور اتوماتیک پیدا میکرد ...

لطفاً در این مورد توضیح بدید .

aminkk
جمعه 11 اردیبهشت 1388, 15:36 عصر
چی شد ادامه نمی دین

y.saied
یک شنبه 23 خرداد 1389, 18:52 عصر
اساتید محترم نمیخواین این بحث رو ادامه بدین ؟

850725115
شنبه 05 تیر 1389, 19:40 عصر
با سلام اگه اجازه بدین من هم به جمتون وارد بشم
راستیش بحث بسار عالی ولی هیچ کس ی برنامه ارائه نداده
که به درد بخوره و بشه از ی جا شروع کرد من تا چند روز اینده ی برنامه می زارم امیدوارم به درد خودمو شما بخوره

(از مدیران و اساتید خواهش دارم کاری کنند که از این بحث نتیجه کسب کنیم )

با تشکر از همه دوستان