# Native Code > برنامه نویسی در 6 VB > برنامه نویسی مرتبط با شبکه و وب در VB6 >  نوشتن نرم افزار تحت شبكه LAN

## VB.SOS

سلام خدمت تمامي دوستان
اگه درباره تيتر اين تاپيك جستجو كرده باشين ميبينين كه با اين مطالب موجود نميشه يه نرم افزار واقعي تحت شبكه نوشت.
فكر كنم نوشتن يه برنامه تحت شبكه دغدغه خيلي ها باشه. چون موضوع يكم از محيط vb خارج ميشه و به مفاهيم و تظيمات شبكه و سخت افزار و ... مربوط ميشه. همچنين بحث يكم تئوريك.

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

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

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

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

----------


## mpmsoft

> يك شبكه LAN با حدود 150 تا كامپيوتر داريم


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

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

----------


## VB.SOS

با تشكر از توجهتون.
ممنون ميشم اگه درباره Domain و Workgtoup توضيح بدين

----------


## VB.SOS

براي دريافت كتاب هاي مربوط به شبكه به تاپيك كتابهاي الكترونيك رجوع كنيد:
https://barnamenevis.org/showthread.php?t=111558

----------


## mpmsoft

فرض بفرمایید یک شبکه با 150 کلاینت دارید
و شبکه شما مبتنی بر Workgtoup هست

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

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

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

----------


## اوبالیت به بو

> 4- تو اين برنامه صرفا ثبت اطلاعات مطرح نيست و برنامه محسبات و پردازشهاي زيادي ممكنه انجام بده


من دو بخشش  مي كنم:



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


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


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


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


> 5- برنامه داراي كاربرهاي ثبت شده هست و هر كس از هر كامپوتري ميتونه وارد حساب كاربريش بشه.


يه Login ساده هستش. اگر مي خواين كمي برنامه قشنگ تر بشه مي تونيد همون تكنيك سوال 4 رو استفاده كنيد تا ليست كاربران Login شده در يك Grid يا ... با IP هاشون نمايش داده بشه.

----------


## VB.SOS

دوستان من فكر ميكنم كه بحث رو بايد از اول اول شروع كرد:
جناب M8SPY براي كاركردن يه نرم افزار تحت شبكه روش زير پيشنهاد ميكنن:




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


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

ممنونم

----------


## مهران رسا

> يك Listener بايد باشه كه به يك IP خاص گوش بده


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

----------


## VB.SOS

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

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

----------


## VB.SOS

دوستان انتظار همكاري بيشتري داشتم. اي كاش سرعت پرداختن به تاپيك بيشتر بود.

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

----------


## .:KeihanCPU:.

یه نگاهی به سورس موجود در پست زیر بندازید.
مطمئن باشید کلی مشکلات حل میشه.
اگرم سوالی هست بنده در خدمتم.
https://barnamenevis.org/showpo...&postcount=305

----------


## r0ot$harp

*





 نوشته شده توسط VB.SOS


دوستان من فكر ميكنم كه بحث رو بايد از اول اول شروع كرد:
جناب M8SPY براي كاركردن يه نرم افزار تحت شبكه روش زير پيشنهاد ميكنن:



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

ممنونم







 نوشته شده توسط VB.SOS


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

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



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


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



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

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




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

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



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

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


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

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





باتشکر احسان

*

----------


## مهران رسا

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




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

----------


## D32.00110

عزیز فکر کنم این مشکل حل شده است و تو فروم هم در موردش بحث شده برنامه هم زیاده منم اون زمون پروژه کاردانیم یه همچین چیزی بود که 100 تا کلاینت رو ساپورت میکرد البته بیشتر هم میشد ولی امتحان نکرده بودم ...
شما مشکلتون کجاست ؟؟؟  :متفکر: 




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


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

----------


## VB.SOS

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

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

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

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

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

----------


## مهران رسا

دوستان عزیز ، D32.00110 و sanaz13x ؛ لطفاً در مورد راه حل هاتون توضیح بدین .ممنون .

----------


## VB.SOS

من قول ميدم اگه اين تاپيك به نتيجه دلخواه برسه يه pdf جامع در اين مورد بنويسم كه با اين جمله شروع بشه:
برنامه ي ويژوال بيسيك رو اجرا كنيد. يك پروژه جديد ايجاد كنيد :قهقهه:  :قهقهه:  :قهقهه:  :قهقهه:  :قهقهه: 
يعني خيلي مقدماتي تا خيلي پيشرفته شايد صد صفحه :متفکر:  :متفکر:

----------


## mpmsoft

> در مورد , مورد 5 : 
> 
> اگر آیپی سرور Valid باشه شما می تونید در برنامه کلاینت ها وقتی برنامه اجرا شد سریعا به سرور متصل بشه .  
> 
> 
> 
> لطفاً در این مورد کمی توضیح بدید .


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

مثال :

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

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


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

----------


## senator_aka

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

----------


## مهران رسا

> کاملا واضح هست وقتی کامپیوتر مرکزی یک آی پی ثابت داشته باشه که Valid باشه می تونید بوسیله آی پی و پورت از راه دور به کامپیوتر مرکزی وصل بشید
> 
> مثال :
> 
> کامپیوتر مرکزی آی پی ثابت داره 85.165.1.133 و پورت فرضا 2555 رو باز گذاشتید و winsock درحال listen کردن هست
> 
> حالا شما به عنوان کلاینت می خواهید به کامپیوتر مرکزی متصل بشید فقط کافی هست آی پی و پورت رو وارد کنید و connect بشی


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

----------


## mpmsoft

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




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


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

----------


## .:KeihanCPU:.

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


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



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


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

----------


## r0ot$harp

*




 نوشته شده توسط .:KeihanCPU:.


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

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


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



باتشکر احسان

*

----------


## mpmsoft

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


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

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

----------


## VB.SOS

بچه هاي عزيز فكر كنم داريم از موضوع منحرف ميشيم

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

----------


## مهران رسا

> وقتی شما یک آی پی ثابت داشته باشی که تغییر نکنه نیازی نیست شناسایش کنی


چه جوری باید همین آی پی ثابت رو تشخیص بدیم ؟چه جوری با استفاده از VB ، در شبکه LAN آی پی سرور رو پیدا کنیم ؟چه جوری با استفاده از VB توسط سرور در شبکه LAN ، آی پی کلاینت ها رو پیدا کنیم ؟پست از D32.00110



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


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

----------


## aminkk

چی شد ادامه نمی دین

----------


## y.saied

اساتید محترم نمیخواین این بحث رو ادامه بدین ؟

----------


## 850725115

با سلام اگه اجازه بدین من هم به جمتون وارد بشم 
راستیش بحث بسار عالی ولی هیچ کس ی برنامه ارائه نداده 
که به درد بخوره و بشه از ی جا شروع کرد من تا چند روز اینده ی برنامه می زارم امیدوارم به درد خودمو  شما بخوره 

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

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

----------

