یک برنامه C بنویسید که با استفاده از struct sockaddr_in از هدر netinet/in.h یک سرور UDP روی پورت 8080 راه‌اندازی کند و هر پیامی را که از کلاینت دریافت می‌کند به فرستنده بازگرداند (echo).

4.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:29

0.0

برای حل این مسئله از توابع socket، bind، recvfrom و sendto استفاده کنید؛ sockaddr_in را با sin_family = AF_INET، sin_addr.s_addr = htonl(INADDR_ANY) و sin_port = htons(8080) مقداردهی کنید، سپس پس از bind وارد حلقه‌ای شده و با recvfrom پیام‌ها را دریافت و با sendto همان پیام را برگردانید. از هدرهای استاندارد مانند sys/socket.h، netinet/in.h، arpa/inet.h، string.h و stdio.h استفاده کنید، خطاها را بررسی و در پایان socket را ببندید؛ برای نمایش آدرس فرستنده می‌توانید از inet_ntop یا inet_ntoa استفاده کنید.

توسط پژوهشگر در 221 روز قبل ساعت 01:29
دسته بندی ها: C for beginner
reyhaneh در 221 روز قبل ساعت 13:04

در حل این مسئله recvfrom مقدار داده و آدرس فرستنده را برمی‌گرداند؛ پس حتما مقدار بازگشتی را بررسی کنید و بافر را با اندازه مناسب استفاده کنید تا داده‌ها به‌درستی دریافت شوند. برای نمایش آدرس فرستنده از inet_ntop استفاده کنید تا خروجی خوانا و سازگار با IPv4 باشد. فراموش نکنید که خطاها را بررسی کرده و در پایان سوکت را ببندید؛ مقداردهی به ساختار sockaddr_in باید با sin_family = AF_INET، sin_addr.s_addr = htonl(INADDR_ANY) و sin_port = htons(8080) انجام شود. توجه داشته باشید UDP بدون اتصال است و ممکن است برخی پیام‌ها از دست برود، پس به مدیریت اندازه بافر و استراتژی پاسخ‌دهی توجه کنید.

گزارش

1 پاسخ

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

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