LINUX.ORG.RU

Траблы с TCP . не освобождается порт. HELP!!!


0

0

RedHat 6.2 kernel 2.2.19. Ethernet. Есть меленький демон (на с), который listen на TCP порту (7010) он написан по образу и подобию примера из книжек (Рабочевский например) и всяких манов. При приему запроса - форкаемся для обработки, и по SIGCHLD делаем wait() чтоб убить Zombie. все вроде нормально но иногда из-за каких-то глюков (отследить его работу сложно), он виснет. вышибаем все его процессы - пытаемся запустить снова - тоже самое: error in bind().

netstat -n -a | grep 7010 tcp 0 0 <MY-IP>:7010 <SAME-IP>:3667 FIN_WAIT1 по-моему так

ifconfig eth0 down , up - не помогает network restart - не помогает initd restrat - тоже. kill -1 1 тоже. init 1 тоже. помогает только init 6 (или init 0 ;-) ) Если надо пришлю исходничек, но явсе делал по правилам. socket() bind() accept() connect() close() . вроде все. Помогите пожалуйста! Глюк редко но бывает.


При завершении процесса не забудь сделать сокету shutdown, лаже если вылетаешь по сигналу :) Если не сделал, то подожди минут 5, порт сам закроется. Если ждать нельзя, то можешь на свой страх и риск использовать SO_REUSEADDR. Читай об этом в FAQ'е: http://www.lcg.org/sock-faq/

anonymous
()

Рекомендую установить F_SETFD опцию для сокета - когда прога вылетит (или выйдеш) - сокет автоматически закроется если он был открыт: fcntl(socket_, F_SETFD, 1)

tvn
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.