یک برنامه C بنویسید که با استفاده از sys/socket.h یک سرور TCP ساده روی 127.0.0.1:8080 راهاندازی کند، از یک کلاینت یک پیغام متنی دریافت کند، پاسخ متنی مناسب بفرستد و سپس اتصال را ببندد.
4.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 01:55 0.0
برای حل این مسئله از توابع پایهای sockets در استفاده کنید: socket() برای ایجاد سوکت، bind() برای متصل کردن آن به آدرس و پورت (استفاده از struct sockaddr_in و تابع htons برای پورت)، listen() و accept() برای قبول اتصال ورودی، سپس recv() برای خواندن پیام و send() برای ارسال پاسخ و در نهایت close() برای بستن سوکت. نکات: مقدار بازگشتی توابع را چک کنید و در صورت نیاز از perror برای دیباگ استفاده کنید، میتوانید setsockopt(SO_REUSEADDR) را قبل از bind() بگذارید تا مشکل استفاده مجدد پورت حل شود و برای تست از telnet یا netcat (nc) استفاده کنید. کامپایل با gcc کافی است: gcc server.c -o server.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته کلیدی این پروژه این است که برای هر فراخوانی recv مقدار برگشتی را بررسی کنید و به هر باره با استفاده از حلقه بخوانید تا کل پیام به دست آید. همچنین بهتر است قبل از bind، گزینه SO_REUSEADDR را با setsockopt فعال کنید تا در اجرای مجدد آزمایش با پورت در حال استفاده مواجه نشوید. در تست با telnet یا nc، انتظار داشته باشید که کل پیام را تا پایان خطوط بفرستد و سرور باید بعد از ارسال پاسخ اتصال را به طور تمیز ببندد. استفاده از perror برای گزارش خطاهای سیستم و پاکسازی منابع حیاتی است.
گزارش