Pull to refresh
2
0
Send message
Ну вот если печатать одно, а диктовать другое то может и эффективно. Например надиктовывать каркасы классов, а потом ручками дописывать.
Foreach...foreach. Foreach!
Ага, когда ретрансмиссия используется в обычном режиме, то клиент прекрасно разбирает все. Но при этом количество ретрансмиссий несравнимо меньше с количеством обычных сообщений, поэтому уж их то можно не напрягаясь отследить.
Что-то я не уловил. Если за обычными пакетами TCP следят, то почему не могут следить и за ретрансмиссией? Они же принципиально ничем не отличаются.
Внезапно я вспомнил, что в первой матрице была такая штука, когда Нео вытаскивали. Надо же, а я думал это чисто фантазия.
Более того, в вашем случае необходим запущенный клиент. А для фарма в промышленных масштабах нужно много одновременно бегающих ботов. Не всякий компутер потянет столько открытых окон.
Эм. Т.е. если я клиент не запущу, то он вычислит программу и мой аккаунт, а если запущу, то мне надо бота прятать в кернелмоде?

Хорошо, если клиент ВоВ работает как антивирус в режиме проактивной защиты, я его вообще удалю перед запуском бота. Так сойдет?
А если бот будет играть, то зачем запускать клиент?
Ну про ядро вы помоему загнули. Сервер и клиент общаются только через сеть. Следовательно, если бот будет слать пакеты идиентичные настоящему клиенту игры, то сервер в жизни ничего не заметит.
Но согласен, реверсить придется в любом случае.
У меня такая же мышь, проблемы со скролом не наблюдал.
Зато через 3 года работы сломалась левая кнопка мыши, пришлось разобрать и вытащить из под кнопки тройного нажатия работающую деталь. И да, покрытие пооблезло.
Не хочу показаться занудой, но вы знаете как писать «чо»/«що»?
Ненуичо? Даже ссылки на penspin.ru/ нету.
До конца доглядеть не смог.
Я понял о чем вы. Тут вы правы. Просто я pre-allocate все буферы при старте сервера, поэтому как то не задумывался об этом.
>у ядра есть свои буфферы для сокетов
Да, приложение работает не с этими буферами. Zero-copy это вообще отдельная тема.

>Но это же во много хуже по сравнению с неблокирующим вариантом, где мне достаточно одного буффера на тред

На тред? У вас client-per-thread? Тогда стоит считать не буферы, а треды. При описанной выше схеме у вас всего лишь несколько потоков.

И я не совсем понял насчет
>что мы ко всему этому на каждый запрос чтения выделяем буффер

Со стороны вызовы recv на неблокирующем сокете и WSASend с OVERLAPPED выглядят одинаково. Разница в том, как мы получаем и обрабатываем результат выполнения.
И да, скоро соберу себя в кучу и переведу статью, откуда эту картинку взял.
То, что вы описали kills the purpose. Я еще в прошлом посте хотел отметить что неблокирующие сокеты (или вообще чтение/запись) это еще не асинхронность.

Суть как раз в том, что после

>делаем асинхронный запрос на чтение и передаём буффер

мы ничего не ждем. Каждый цикл мы смотрим на ситуацию — есть ли чего на отправку или на прием. Если что-то есть, то мы инициируем новую операцию или обрабатываем завершившуюся. Если нет вообще ничего, то поток спит не потребляя CPU.

Вообще касательно линукса: там есть aio. Вот хорошая, на мой взгляд иллюстрация: www.ibm.com/developerworks/linux/library/l-async/figure1.gif
Aio — это фактически оверлаппед вызовы виндовс. Порта завершения в линуксе нет, т.к. это относительно высокоуровневый объект. Я сейчас разбираюсь с механизмом kqueue+aio в FreeBSD, чтобы реализовать аналог iocp.
Вообще статья о потоках, а не буферах, так что я не мудрувствовал особо. Впрочем, у меня вообще нету отдельных буферов для каждого клиента — все клиенту пишут в одно большое кольцо памяти, которое кстати статично и мне не приходится каждый раз искать место под нового юзера или новое сообщение.
12 ...
11

Information

Rating
Does not participate
Location
Россия
Registered
Activity