یک برنامه جاوا بنویسید که شامل یک سرور 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") در سرور استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای جلوگیری از بلوکه شدن سرور در حالتهای نامطمئن، از setSoTimeout استفاده کنید و یک شرط خروج امن مانند دریافت پیام "exit" پیادهسازی کنید. فراموش نکنید از UTF-8 هنگام تبدیل متن به بایت و بالعکس استفاده کنید و منابع را با try-with-resources ببندید. اندازه بافر دریافت DatagramPacket را مناسب انتخاب کرده و اگر پیام طولانیتر از بافر بود، منطق تقسیم و بازپسفرستادن را لحاظ کنید. در کلاینت نیز پاسخ را با چاپ متن رمون UTF-8 نمایش دهید و نسبت به خطاها و زمانبندی پاسخها مدیریت مناسب انجام دهید.
گزارش