یک برنامهٔ C بنویسید که با استفاده از هدر sys/socket.h یک سرور TCP ساده روی پورت 8080 راه‌اندازی کند، یک اتصال ورودی را بپذیرد، پیام دریافتی را بخواند و همان پیام را به کلاینت بازگرداند و سپس اتصال را ببندد.

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

0.0

برای حل این مسئله از توابع socket(), bind(), listen(), accept(), recv() و send() در هدرهای sys/socket.h، netinet/in.h و arpa/inet.h استفاده کنید؛ همچنین از unistd.h برای close() و از htons() برای تبدیل شماره پورت بهره ببرید. نکات: مقادیر برگردانده شده از توابع را چک کنید، پیش از bind گزینهٔ SO_REUSEADDR را با setsockopt فعال کنید، با بافر مناسب داده‌ها را recv کنید و رشته را خاتمه‌دهی کنید، و پس از send اتصال را ببندید؛ پیاده‌سازی می‌تواند برای یک کلاینت واحد و به‌صورت بلاک‌کننده ساده باشد.

توسط پژوهشگر در 201 روز قبل ساعت 03:29
دسته بندی ها: C for beginner
sara در 201 روز قبل ساعت 06:15

نکتهٔ کلیدی این پیاده‌سازی این است که هر مقدار بازگشتی توابع سیستم را به‌دقت بررسی کنید و خطاها را مدیریت کنید (به‌خصوص accept، recv و send). قبل از bind از فعال‌سازی SO_REUSEADDR با استفاده از setsockopt استفاده کنید تا مشکلات مربوط به دوباره‌بازکردن پورت برطرف شود. برای دریافت کامل پیام از کلاینت، از یک حلقهٔ recv با بافر مناسب استفاده کنید و سپس همان داده را با send بازگردانید و در نهایت اتصال را بَندید. در پایان همواره با close() هر سوکت فعال را ببندید تا منابع آزاد شوند و برنامه بتواند در محیط‌های واقعی به‌خوبی کار کند.

گزارش

1 پاسخ

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

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