Почему параметр SO_LINGER не вступил в силу? ⇐ Linux
-
Anonymous
Почему параметр SO_LINGER не вступил в силу?
so_linger в сокете управляет функцией close() для закрытия сокета.
когда l_onoff установлен в 0, сокет отбрасывает данные в буфере и возвращает их при вызове close;
Когда l_onoff установлен в 1, а l_linger установлен в 0, сокет возвращает первое сообщение на другой конец, если в буфере есть данные;
Когда l_onoff установлен в 1, а l_linger больше 0, если данные существуют в буфере, он будет ждать размера l_linger, а затем вернется.
Но, похоже, при тестировании параметра so_linger это не так.
Когда я исследовал сокеты и просматривал параметр SO_LINGER, я выполнил следующий тест:
/* server.cc */ #include #include #include #include #include #include #include #include #include #include недействительный сервис (INT порт = 11115) { // создаем структуру адреса структура sockaddr_in serv_addr; serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons (порт); serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); std::cout
so_linger в сокете управляет функцией close() для закрытия сокета.
когда l_onoff установлен в 0, сокет отбрасывает данные в буфере и возвращает их при вызове close;
Когда l_onoff установлен в 1, а l_linger установлен в 0, сокет возвращает первое сообщение на другой конец, если в буфере есть данные;
Когда l_onoff установлен в 1, а l_linger больше 0, если данные существуют в буфере, он будет ждать размера l_linger, а затем вернется.
Но, похоже, при тестировании параметра so_linger это не так.
Когда я исследовал сокеты и просматривал параметр SO_LINGER, я выполнил следующий тест:
/* server.cc */ #include #include #include #include #include #include #include #include #include #include недействительный сервис (INT порт = 11115) { // создаем структуру адреса структура sockaddr_in serv_addr; serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons (порт); serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); std::cout
Мобильная версия