یک برنامه سرور TCP ساده به زبان C بنویسید که با استفاده از هدر sys/socket.h روی پورت 8080 گوش دهد و هر پیام دریافتی از کلاینت را به فرستنده بازتاب (echo) کند.
4.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:20 0.0
برای حل این مسئله از توابع socket(), bind(), listen(), accept(), recv() و send() استفاده کنید و ساختار sockaddr_in را از برای تنظیم آدرس و پورت به کار ببرید؛ پورت را با htons(8080) تبدیل کنید و پس از قبول اتصال با recv داده را بخوانید و با send همان داده را برگردانید و در پایان اتصال را ببندید. نکات مفید: مقادیر بازگشتی توابع را چک کنید، میتوانید پیش از bind گزینه SO_REUSEADDR را با setsockopt تنظیم کنید تا بازگشت سریع پورت ممکن شود، با بافر مناسب (مثلاً 1024 بایت) کار کنید و برای پشتیبانی از چند کلاینت از حلقه و یا fork/thread استفاده کنید (برای سطح مبتدی پردازش متوالی هم کافی است).
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای راهاندازی مجدد سریع پورت، مقدار SO_REUSEADDR را با setsockopt فعال کنید. به خاطر اینکه recv ممکن است کل پیام را یکباره نخواند، با یک بافر 1024 بایت و بررسی return value کار کنید و در صورت دریافت داده ناقص مجدداً بخوانید؛ همچنین ارسال با send هم ممکن است همه داده را برنگرداند و باید در یک حلقه کامل شود. برای پشتیبانی از چند کلاینت، از fork یا thread استفاده کنید یا در سطح ابتدایی از یک حلقه.accept متوالی استفاده کنید. همچنین مطمئن شوید که پورت را با htons(8080) و ساختار sockaddr_in به درستی مقداردهی میکنید و پس از پایان کار سوکت را میبندید.
گزارش