یک برنامهٔ C بنویسید که یک سرور UDP ساده راهاندازی کند که روی پورت 8080 منتظر پیامها باشد و هر پیامی را به فرستنده بازگرداند (echo).
19.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 01:14 0.0
برای حل این مسئله از توابع سوکت در C استفاده کنید: socket(AF_INET, SOCK_DGRAM, 0)، سپس ساختار sockaddr_in از هدر netinet/in.h را مقداردهی کنید (sin_family=AF_INET، sin_port=htons(8080)، sin_addr.s_addr=INADDR_ANY) و با bind به پورت مورد نظر متصل شوید. در یک حلقه recvfrom برای دریافت پیامها و سپس sendto برای ارسال مجدد پیام به فرستنده استفاده کنید. نکات: با memset ساختار را صفر کنید، طول بافر را مدیریت و مقادیر بازگشتی توابع را چک کنید و در پایان سوکت را با close ببندید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
پیشنهاد میکنم قبل از bind گزینهٔ SO_REUSEADDR را با setsockopt فعال کنید تا در صورت ریستارت سریع برنامه بتوانید مجدداً به پورت 8080 متصل شوید. در حلقه recvfrom حتماً مقدار برگشتی را بررسی کرده و طول بافر را رعایت و بعد از دریافت دادهها یک terminate کنندهٔ صفر اضافه کنید تا هنگام چاپ رشته دچار سرریز نشوید. برای خاتمهٔ نرم سرور از هندلر سیگنال (مثلاً SIGINT) استفاده کنید تا سوکت بسته شود و منابع آزاد گردند. همچنین خطاهای موقتی مانند EINTR یا EAGAIN را مدیریت کنید تا سرور پایدار بماند.
گزارش