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