PDA

View Full Version : سوال: Server IP



VB.SOS
چهارشنبه 16 مرداد 1387, 13:50 عصر
سلام خدمت دوستان عزيز
از اونجايي كه كلاينت ها به IP سرور نياز دارن چه طور ميشه اين IP رو به اطلاع كلاينت ها رسوند

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

scarce
چهارشنبه 16 مرداد 1387, 15:14 عصر
شما می تونید از winsock استفاده کنید و اینجوری می تونید به سرور وصل شود.


winsock1.connect serverIP,ServerPort


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

VB.SOS
چهارشنبه 16 مرداد 1387, 16:05 عصر
اگه از روش اول استفاده كنم مقادير serverIP,ServerPort رو كي ست مي كنه؟

مهران رسا
چهارشنبه 16 مرداد 1387, 16:18 عصر
ببین اون طرفی که در حالت Listen هست دیگه نیازی نداره IP رایانه مقابلش رو بدونه ... فقط پورت باید در اون مشخص بشه ..

برای مثال Client ها آماده اند تا سرور برای اونها اطلاعات بفرسته . در اینجا کلاینت ها در حالت Listen قرار میگیرند و از اون طرف Server با دونستن IP کلاینت و پورت مشخصی که بین این دو وجود داره به کلاینت متصل میشه .



Server
W1.RemoteHost = "127.0.0.1"
W1.RemotePort = 1111
W1.Connect





Client
W1.LocalPort = 1111
W1.Listen


البته عکس این موضوع هم امکان پذیره !

VB.SOS
چهارشنبه 16 مرداد 1387, 17:02 عصر
جناب M8SPY سه نكته قابل ذكره كه ممنون ميشم توجه كنيد:
1- من يه نمونه كوچك تو اين زمينه پيدا كردم كه تو اون كار سرور و كلاينت با انچكه شما گفتين برعكسه (فعلا مهم نيست، لطفا تعريف سرور و كلاينت رو از منظر خدتون برام بگين)

2- تو قسمت Sever خودتون نوشتين W1.RemoteHost = "127.0.0.1 " . مي دونيم IP استفاده شده براي زماني كه هم Server و هم Client رو داريم تو يه كامپيوتر تست مي كنيم در حالي كه تو شرايط واقعي اين IP چيز ديگري هست و ما بي اطلاع از اون

3- از اونجايي كه قراره اولين برنامه تحت شبكه م رو بنويسم (كه داراي ديتابيس نيز هست)، لطفا سازو كاري كه در زير مينويسم رو بررسي كنيد و در صورت اشتباه بودن روش صحيح رو برام بيان كنيد:

تو روش من يك برنامه كامل به اسم Sever مي نويسيم كه ديتابيس كنارش قرار داره. اين برنامه تو Server شبكه نصب ميشه.
يه برنامه Client مي نويسيم كه تو همه كلاينت ها بايد نصب بشه. برنامه سرور روي يه port خاص منتظر خط فرمانهاي از پيش تعيين شده ميمونه. بعد از رسيدن خط فرمان (مثلا كد SQL براي يه پرسوجو) اطلاعات لازم رو از ديتابيس استخراج ميكنه و به كامپيوتر درخواست كننده ميفرسته.
با اين وجود اين دو كامپيوتر نقش هاي كلاينت و سرور رو بين خودشون عوض مي كنن

ببخشيد اگه طولاني شد (اگه خنده داره لطفا نخنديد!!!!) . در صورت نياز به اطلاعات بيشتر بهم بگيد
باز هم تشكر

مهران رسا
چهارشنبه 16 مرداد 1387, 19:40 عصر
خب نیاز شد در مورد سرور بیشتر توضیح بدم .

ببینید اینجا منظور ما از سرور رایانه ای نیست که فقط اطلاعات را بفرسته و یا فقط اطلاعات رو دریافت کنه . سرور به رایانه ای گفته میشه که یک و یا چند نوع سرویس خاص ارائه بده . این سرویس دهی می تونه در غالب یک Application Server و یا File Server عرضه بشه .

برای مثال وظیفه یک File Server این هست که با دارا بودن از یک سیستم سخت افزاری قدرتمند (Hard Disk) زمینه ذخیره سازی فایل های کلاینت ها رو فراهم کنه ...

با توجه به درخواست مطرح شده ؛ شما نیاز به یک سرور از نوع DataBase Server که شاید بشه گفت ترکیبی از Application Server و File Server هست ، دارید .

وظایف DataBase Server اینکه که اولاً بانک اطلاعاتی برنامه باید روی این سیستم باشه . دوماً باید قادر باشه از طریق پورت مشخص ، درخواست کلاینت ها رو از طریق یک شبکه LAN یا WAN دریافت کنه و پس از انجام پردازش روی بانک اطلاعاتی ، نتایج رو برای کلاینت ها ارسال کنه .

حالا بررسی می کنیم چه کارهایی قرار انجام بشه :

در درجه اول سرور باید IP کلاینت ها رو بدونه که تعدادی روش برای اینکار وجود داره که فکر می کنم یکی از اونها استفاده از دستورات CMD هست .
پس از اینکار سرور با ارسال پیغام به کلاینت ها آمادگی خودش برای دریافت درخواست ها رو اعلام می کنه . اینجا دیگه نیازی نیست کلاینت ها IP سرور رو بدونن چون از طریق همون پورتی که اعلام آمادگی سرور رو دریافت کردند قادرند به ارسال درخواست بپردازند .

پس درخواست خودشون رو مثلاً در غالب یک رشته با مفهوم ارسال می کنند .

(اینجا یک سوال پیش پا افتاده پیش میاد که چرا Server فایل بانک اطلاعاتی رو برای کلاینت ها ارسال نمی کنه تا دیگه نیازی به رجوع به سرور برای انجام اعمال مربوط به بانک اطلاعاتی نباشه . جواب اون هم کاملاً مشخصه : که آیا ارسال یک فایل با حجم مثلاً 10 مگابایت در ترافیک شبکه تاثیر بیشتری داره یا ارسال یک رشته 1 کیلوبایتی ؟!!! )


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

VB.SOS
چهارشنبه 16 مرداد 1387, 23:12 عصر
از لطف تون بي نهايت سپاس گزارم. كمك بزرگي كرديد.
يه جا گفتين كه
" اینجا دیگه نیازی نیست کلاینت ها IP سرور رو بدونن چون از طریق همون پورتی که اعلام آمادگی سرور رو دریافت کردند قادرند به ارسال درخواست بپردازند ."
مي خوام بدونم اين پورت چجوري به كلاينت ها فهمونده ميشه؟
آيا همون requestID تو رويداد ConnectionRequest هست؟

مهران رسا
پنج شنبه 17 مرداد 1387, 08:18 صبح
راستش در مورد requestID دقیقاً چیزی نمیدونم . ولی فکر نمی کنم ربطی هم به پورت داشته باشه.. (شاید شماره درخواست و یه چیزی شبیه به اون رو بر میگردونه)



مي خوام بدونم اين پورت چجوري به كلاينت ها فهمونده ميشه؟


زمان برنامه نویسی Server و Client ، این پورت ها رو مشخص کن ...