View Full Version : سوال: clinet/server
shermine
چهارشنبه 19 اسفند 1388, 07:02 صبح
سلام
چطور میتوانیم یک سرور داشته باشیم که اسم کشور را از کلاینت بگیره و پایتخت اون کشور را برای اون بفرستد..؟ (ترجیحا" با سوکت و ترد)
ممنون میشم اگر راهنمایی کنید :ناراحت:
jlover
پنج شنبه 20 اسفند 1388, 16:31 عصر
باید کلاینت اسم کشور رو به درون سوکت ( که ارتباط کلاینت و سرور از این کانال هست ) بنویسه و سرور هم این رشته رو از سوکت بخونه و حالا طبق یکی از سناریوهای زیر ، رشته ی متناظر ( نام پایتخت کشور ) رو به درون سوکت بنویسه و کلاینت اطلاعات درون سوکت ( نام پایتخت کشور مورد تقاضا ) رو بخونه
سناریوها :
1 - با فرض بر اینکه سرور به یک فایل متنی در حوزه ی محلی خودش ( یا البته هر جای دیگه ای فکر میکنم امکانپذیر باشه ! ) دسترسی داره که این فایل متنی مثلن در هر خط اسم یک کشور و با یک فاصله ی مثلن t/ اسم پایتخت اون کشور رو داره ، سرور بعد از گرفتن رشته ی مورد درخاست کلاینت باید درون این فایل متنی جستجو و نتیجه ی مورد نظر رو برگردونه
2 - انجام همین جستجو در یک پایگاه داده ( که من متاسفانه چیزی از پایگاه داده نمیدونم :ناراحت: )
3 - استفاده از یک بستار if else,else if
4 - ....
jlover
شنبه 22 اسفند 1388, 17:40 عصر
در هر صورت من این برنامه رو به طور کامل پیاده سازی کردم و حتی یک ر.ک.گ هم برای مشتری ساختم و در دو پکیج بسته بندی کردم که به شرح زیر در اختیارتون میگذارم :
پکیج ooservice که بدون دستکاری ، رو نوشتی هست از پکیجی به همین نام در کتاب « جاوا،جاوا،جاوا » فصل پانزده که از پیوند زیر هم قابل دسترسی هست
http://www.cs.trincoll.edu/~jjjava/sourcecode2E/#ch15
پکیج "countryService " که پیاده سازی راهکار مسئله ای هست که در پست اول عنوان شده و کار ساده ای از خودمه و گرچه مستند سازی نشده ، اما در هر دو سمت خدمتگزار و مشتری ( و همچنین در ر.ک.گ ) پیغامهای مناسبی به شما ارائه میشه
این مثال ها از جهت اعمال رویکرد شیء گرا و ارائه ی یک الگوی کلی از مدل خدمتگزار/مشتری بسیار مفید هستند
امیدورام برای دوستان کارساز باشه
اسماعیل اشرفی
-------------------------------------------
برای استفاده هم باید دستور پکیج بکار رفته در کلاسها رو به نام دلخاه خودتون ( که همون پوشه ای هست که جفت پوشه ها رو در اون قرار میدید ) تغییر بدید و در تغییرات رو در import ها هم اعمال کنید ( البته در نتبینز کافیه که از new projt-->create java application with existing sources رو دنبال کنید و پوشه ی حاوی هر دو بسته رو انتخاب کنید )
البته اگر هم اسم پوشه ی حاوی این دو بسته رو با نام ch15chapter15 انتخاب کنید که دیگه ساده تر میشه
jlover
دوشنبه 24 اسفند 1388, 19:43 عصر
خب دوستان عزیز
از اونجاییکه فکر کردم بد نیست حالا که این مثالهای آموزشی رو قرار دادم تکمیلش کنم بسته ی دیگه ای که حاوی پکیجها قبلی و همچنین یک پکیج جدید هست رو ضمیمه میکنم .
سرورهای قبلی قابلیت پشتیبانی همزمان از بیش از یک مشتری رو نداشتند ( گرچه میتونستند به هر تعدادی که در سازنده ی ServerSocket مشخص شده بود ، مشتری در صف نگه دارند) اما هر کدوم از مشتریها میبایست ابتدا ارتباطشون رو با خدمتگزار خاتمه داده باشند تا ارتباط با مشتری بعدی که در صف قرار داشته برقرار بشه
پکیج sunMultiServiceModel حاوی یک کلاس برگرفته از خودآموزهای سان هست که بنده برای استفاده در مثالهامون ( CountryService & EchoService ) ویرایشش کردم و همچنین نسخه های ویرایش شده از کلاسهای EchoServer و CountryServer به همراه ابرکلاس انتزاعی Server
اگر سوالی بود در خدمتم
پاینده باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.