В том и дело, что я стараюсь не смотреть поверхностно, а сам в своё время интересовался этой проблемой. Наблюдал, при каких условиях это происходит, при каких - нет.
Но тут было упомянуто о движении мышки)) Какое же, право, сударь, это имеет отношение к обмену информацией с сервером? Обмен - это команды, координаты, текстовая информация и т.д. Т.е. какие-либо действия, подразумевающие отправку клиентом запроса на сервер.
З.ы. с Ла2 не сталкивался, уберегло меня что-то от этого дела)

Зметьте... "троагл мышку" было в кавычках, что обозначало вообще активность в игре.
Я сам занимаюсь разработкой игр и сетевых в частности и прекрасно знаю про структуры класса клиент-сервер, TCP, UDP, Socket'ы и прочее.
Да и обрывать соединение сервер не должен ни при каких условиях.
Вы знаете, одно интересное свойство протокола TCP заключается в том, что он в отличие от UDP не следит за порядком пакетов... пакеты могут придти в любом порядке, независимо от того, как были отправлены.
Поэтому для определения коннекта клиента с сервером используются специальные пакеты отправляемые через определенные интервалы времени и определяющие "жив" ли клиент на линии или его пора отдисконнектить.
И пока клиент "жив" сервер не будет его отсоединять ни при каких условиях.
вопрос тут в другом... так-как клиент никак не реагирует на то, что он отдисконнекчен - можно понять, что произошел дисконнект где-то на линии.
Если бы был дисконнект сервером - он просто послал бы команду на логаут. Примерно как при рестарте.
А тут же получается так, что клиент работает использую буффер команд... т.е выполняет последний полученный набор команд...
Так работает система во всех ММО играх, для снижения сетевого трафика.
Клиент выполняет последнюю команду... каждый объект находится в последнем полученном состоянии.
И лишь при изменения состояний у объектов сервер дает команды их изменить.
Тут-же происходит так, что клиент думает, что ничего не изменилось просто. Наличие соединения как бы есть. просто сервер ничего не говорит.
А сервер то уже поймал обрыв свзяи... и не получив ответа от клиента завершил его поток(thread). А клиент продолжает думать, что находится на линке. проверки от клиента идет редко, раз в 1 или 5 минут т.к это не жизненно важно, все рассчеты на сервере.
И лишь отправив запрос и получив ответ типа "а вам че надо? ваш поток уже закрыт, извольте свалить"... пишет о дисконнекте.
З.Ы поставлю вопрос по другому. Что может получить причиной таких обрывов на линии? Фаервол(пробовал отключать)? Неисправность модема? Ошибка биллинг систем провайдера? ошибка вообще софте\железа провайдера? Преднамеренные пакости провайдера(у меня ему приличный долг

)?
... еще странно, но есть закономерность, если после простоя активно в чат начинаешь писать - то после написания особенно длинной фразы - дисконнект происходит.
Вот сейчас... молчал, потом написал 2 слова по очереди... после этого длинную фразу писать стал... наживаю ЕНТЕР - тут же дисконнект

(((((((((
Кстати, фаервол почему то proxy.eve.vivox.com блокирует...
Если я не ошибаюсь, это сервера евеВойса???
Сообщение отредактировал Siroi: 22 February 2008 - 5:36