|
December 11th, 2011
10:56 pm - Пинусы Вот блин, за каким хером, если клиент падает под виндой, соединение сразу рвётся, и сервер ловит SocketException. Под лялихом оно переходит в TIME_WAIT, и умирает спустя какое-то время. И вот нахера это?
|
Comments:
From: | (Anonymous) |
Date: | December 11th, 2011 - 09:22 pm |
---|
| | | (Link) |
|
The main thing to recognize about connection teardown is that a connection in the TIME_WAIT state cannot move to the CLOSED state until it has waited for two times the maximum amount of time an IP datagram might live in the Internet. The reason for this is that while the local side of the connection has sent an ACK in response to the other side's FIN segment, it does not know that the ACK was successfully delivered. As a consequence this other side might retransmit its FIN segment, and this second FIN segment might be delayed in the network. If the connection were allowed to move directly to the CLOSED state, then another pair of application processes might come along and open the same connection, and the delayed FIN segment from the earlier incarnation of the connection would immediately initiate the termination of the later incarnation of that connection.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | December 12th, 2011 - 02:35 pm |
---|
| | | (Link) |
|
затем, что у винды проблемы с реализацией сокетов. ну, не только с сокетами, конечно, но и с ними в том числе. потому что индусы читать не умеют.
зыж keep-alive, например. и linger. а лучше — пусть не падает. для чего можно сделать алгоритм наподобие inetd: монитор, который видит падение и сразу закрывает дескриптор.
Меня, кстати, виндовая концепция с исключением устраивает куда как больше: проще разграничить штатный и аварийный уход клиента. (Цимес в том, что надо встроиться в большой тупой Rich Client на жабе, и чем меньше я его потрохов задену, тем спокойнее).
linger попробую, по идее должно помочь.
Естественно, жаба версии 1.4.2, ебу пишу и плачу.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | December 12th, 2011 - 03:51 pm |
---|
| | | (Link) |
|
ну, тут вопрос не в том, что лучше, а что стандартней. в винду встроили костыль. можно точно такой же костыль встроить и в линуксы, тащемта.
кстати, меня вот виндовый подход не устраивает: если в винде рвалось соединение с моим провайдером — всё, прости-прощай. винда-то его восстанавливает, но при этом бережно ломает кайф всем софтинам. в пингвинусе программы даже не замечают, что были какие-то проблемы (которые tcp, понятно; а udp и так никто не гарантировал).
кипэлайвы тоже, оно быстрее одуплится, что на том конце дырку прикрыли. правда, немного трафик вырастет. |
|
|
LJ.Rossia.org |