یک برنامهٔ 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 اتصال را ببندید؛ پیادهسازی میتواند برای یک کلاینت واحد و بهصورت بلاککننده ساده باشد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی این پیادهسازی این است که هر مقدار بازگشتی توابع سیستم را بهدقت بررسی کنید و خطاها را مدیریت کنید (بهخصوص accept، recv و send). قبل از bind از فعالسازی SO_REUSEADDR با استفاده از setsockopt استفاده کنید تا مشکلات مربوط به دوبارهبازکردن پورت برطرف شود. برای دریافت کامل پیام از کلاینت، از یک حلقهٔ recv با بافر مناسب استفاده کنید و سپس همان داده را با send بازگردانید و در نهایت اتصال را بَندید. در پایان همواره با close() هر سوکت فعال را ببندید تا منابع آزاد شوند و برنامه بتواند در محیطهای واقعی بهخوبی کار کند.
گزارش