socket-programming:setsockopt
تفاوتها
تفاوت دو نسخهٔ متفاوت از صفحه را مشاهده میکنید.
| socket-programming:setsockopt [2024/06/18 00:27] – ایجاد شد pejman | socket-programming:setsockopt [2024/06/18 00:59] (فعلی) – حذف شد pejman | ||
|---|---|---|---|
| خط 1: | خط 1: | ||
| - | ==== تابع ()setsockopt ==== | ||
| - | این تابع برای ایجاد تغییرات در option های یک سوکت استفاده می شود. | ||
| - | <code C> | ||
| - | // man 2 setsockopt | ||
| - | #include < | ||
| - | #include < | ||
| - | |||
| - | int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen); | ||
| - | </ | ||
| - | |||
| - | |||
| - | گاهی هنگام اجرای مجدد یک سرور با خطای " | ||
| - | |||
| - | برای جلو گیری از این خطا باید بعد از گرفتن ()socket و قبل از فراخوانی ()bind ، تابع ()setsockopt به شکل زیر فراخوانی شود: | ||
| - | <code C> | ||
| - | // man 7 socket | ||
| - | int option=1; | ||
| - | |||
| - | if (setsockopt(sockfd, | ||
| - | perror(" | ||
| - | exit(1); | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | برای پشتیبانی از dual-stack می توان **یک سوکت IPv6** با hints زیر از [[socket]] گرفت : | ||
| - | <code C> | ||
| - | hints.ai_flags = AI_PASSIVE; | ||
| - | hints.ai_family = AF_INET6; | ||
| - | hints.ai_socktype = SOCK_STREAM; | ||
| - | hints.ai_protocol = 0; | ||
| - | </ | ||
| - | |||
| - | و سپس با اجرای [[setsockopt]] به شکل زیر از همان یک سوکت برای اتصال همزمان به IPv4 و IPv6 استفاده کرد: | ||
| - | |||
| - | <code C> | ||
| - | // man 7 ipv6 | ||
| - | int option=0; | ||
| - | |||
| - | if (setsockopt(sockfd, | ||
| - | perror(" | ||
| - | exit(1); | ||
| - | } | ||
| - | </ | ||
socket-programming/setsockopt.1718657860.txt.gz · آخرین ویرایش: 2024/06/18 00:27 توسط pejman
