یک برنامه جاوا بنویسید که شامل یک سرور UDP و یک کلاینت UDP باشد؛ سرور روی یک پورت مشخص پیام‌های دریافتی را دریافت کند و با اضافه کردن زمان دریافت (مثلاً timestamp) به متن پیام، پاسخ را به فرستنده بازگرداند و کلاینت یک پیام را به سرور ارسال کرده و پاسخ را در کنسول چاپ کند.

12.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:51

0.0

برای حل این مسئله از کلاس‌های DatagramSocket و DatagramPacket در جاوا استفاده کنید: سرور یک DatagramSocket روی پورت مشخص باز کند و در یک حلقه بسته پیام‌ها را با DatagramPacket دریافت کند، زمان دریافت را به رشته اضافه کرده و با DatagramPacket جدید به آدرس و پورت فرستنده بفرستد. کلاینت نیز یک DatagramSocket بسازد، پیام متنی را به بایت تبدیل کند و با DatagramPacket به آدرس و پورت سرور ارسال کند و سپس بسته پاسخ را دریافت و آن را به رشته تبدیل و چاپ کند. در پیاده‌سازی از تبدیل درست encoding (مثلاً UTF-8)، مدیریت استثناها، بستن سوکت‌ها با try-with-resources یا finally و استفاده از setSoTimeout در کلاینت یا قابلیت خروج امن (مثلاً با پیام "exit") در سرور استفاده کنید.

توسط پژوهشگر در 201 روز قبل ساعت 03:51
دسته بندی ها: Java Java for beginner
sara در 201 روز قبل ساعت 04:54

برای جلوگیری از بلوکه شدن سرور در حالت‌های نامطمئن، از setSoTimeout استفاده کنید و یک شرط خروج امن مانند دریافت پیام "exit" پیاده‌سازی کنید. فراموش نکنید از UTF-8 هنگام تبدیل متن به بایت و بالعکس استفاده کنید و منابع را با try-with-resources ببندید. اندازه بافر دریافت DatagramPacket را مناسب انتخاب کرده و اگر پیام طولانی‌تر از بافر بود، منطق تقسیم و بازپس‌فرستادن را لحاظ کنید. در کلاینت نیز پاسخ را با چاپ متن رمون UTF-8 نمایش دهید و نسبت به خطاها و زمان‌بندی پاسخ‌ها مدیریت مناسب انجام دهید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری