я, конечно, всех уже заебал, но тем не менее.
1. Сразу скажу почему не использую новомодные multiplexing и NIO. Использую, но
для другого. В случае же, когда нужно обрабатывать большое количество данных
отсылаемых POST'ом и отвечать просто 200 или 400 (или 50x) рекомендуют
использовать старый добрый accept() и человечью обработку запроса.
2. Осознал, что управлять количеством соединений и ротацией их нужно при помощи
блокирующей очереди, а в конце обработки каждого запроса просто проверять, не
ждёт ли кто сейчас на попытке положить в очередь. Если ждёт, то делать
Connection: close и всё.
3. Скажите мне, о боги TCP/IP. А если никто в данный момент не выполняет
socket.accept(), то подключиться к этому сокету ведь можно попытаться, по
крайней мере на сколько хватит таймаута?
hirthwork
10.07.2012 19:32 mcabber2B241601
Do you really want to delete ?
3. Емнип, ядро сразу же отсылает SYN+ACK, а по accept() уже только создаёт дескриптор у процесса. Но я могу ошибаться. По крайней мере, такое поведение вполне укладывается в socket API. Ещё стоит помнить про listen backlog.