![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
boostcoder |
|
||||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
перед async_write данные нужно приготовить. допустим, добавлю функцию prepare_data, из нее вызову async_write. но если prepare_data вызвать снова из written - то это будет уже не тот тест. т.к. written вызывается когда, согласно документации:
но не понятно, куда "written". в какой-то буфер ОС? на другой конец? кстати, сейчас обратил внимание на это:
т.е. я правильно понимаю, что пока не вызовется хэндлер async_write, нельзя запускать новую операцию записи? с тех пор как познакомился с этим багом, это примечание читал много раз, но обратил внимание только сейчас... Добавлено @ 16:11 просмотром в mc. Добавлено @ 16:14 MAKCim, в тех логах что выложил последними, проглядывается такое: ![]() и такое: ![]() это в файле server_in.log Это сообщение отредактировал(а) boostcoder - 9.4.2011, 16:16 |
||||||
|
|||||||
MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 6 Всего: 207 |
выходит так
думаю, когда возвратились из системного вызова sendmsg, это и есть written Добавлено через 26 секунд так а причем тут tcpdump тогда? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
||||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 6 Всего: 207 |
если рассуждать логически, об этом (про потоки) было бы сказано, хотя не факт, конечно поэтому я и предлагаю как-нибудь исхитриться и не юзать таки более одного потока -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
нет. те скрины что сделаны tcpdump`ом, я комментировал как скрины сделанные tcpdump`ом. вот они: http://clip2net.com/clip/m47996/1300879093-1-262kb.png http://clip2net.com/clip/m47996/1300879448-2-27kb.png http://clip2net.com/clip/m47996/1300879665-3-21kb.png http://clip2net.com/clip/m47996/1300879710-4-22kb.png и последние два: http://clip2net.com/clip/m47996/1302213996...zb3346-11kb.png http://clip2net.com/clip/m47996/1302214240...psa3346-4kb.png т.е., на сколько я понял, для продолжения, нужно переписать клиент так, чтоб следующая запись производилась по окончанию предыдущей? ок. сейчас. Добавлено через 38 секунд
ок. сейчас делаю. |
|||
|
||||
boostcoder |
|
||||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
переписал как договаривались, без единого потока, и с запуском следующей операции записи по завершению предыдущей.
работает значительно дольше, но все равно валится(только при запуске клиента и сервера локально): исходники + логи, тут: http://rghost.ru/5141178 выложу в тему исходники. может я в коде что-то намудрил.. сам не замечаю.. клиент:
сервер:
общий хидер:
на клиент, в один прекрасный, приходит это: ![]() тут две ошибки: 1. склеились две части "sc". 2. клиент ожидает 3574549, а пришло 3574550. Добавлено @ 17:32 вот что еще странно. в server_out.log есть такое: ![]() т.е. одно и то же значение повторяется дважды. хотя, в server_in.log этого нет: ![]() странно.. Это сообщение отредактировал(а) boostcoder - 9.4.2011, 19:31 |
||||||
|
|||||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
запустил сервер на удаленной машине - вроде работает. уже минут 10ть.
... уже пол часа. Это сообщение отредактировал(а) boostcoder - 9.4.2011, 18:45 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
а возврат из sendmsg() когда происходит? что-то немогу в доках найти этого момента.. дело в том, что скорость очень сильно упала. сейчас, используется около 17% от пропускной способности. чем это может быть вызвано? |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
возможно это из-за того, что происходит почти симметричных обмен? т.е. кол-во входящих и исходящих данных почти равно. сейчас имею такую скорость обмена для одного клиента в секунду. что больше чем требуется.
вот только решить бы еще проблему порчи данных при запуске клиента и сервера локально.. Это сообщение отредактировал(а) boostcoder - 9.4.2011, 19:53 |
|||
|
||||
phprus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 22.8.2006 Репутация: 1 Всего: 3 |
||||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
да. сервер реализован по принципу реакции. пришли данные от клиента - отсылается ответ. и только после этого запускается следующая операция чтения. Добавлено через 4 минуты и 41 секунду коды несколькими постами выше. Это сообщение отредактировал(а) boostcoder - 9.4.2011, 19:26 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
наверное тогда же, когда и send(). но в тестах, сокеты находятся в неблокирующем режиме.
получается что нет. т.к. изменил клиента и сервера так, что клиент только шлет, а сервер только принимает. никаких ответов обратно не шлется. скорость не увеличилась... ... увеличил размер массивов с 13 байт до 1024 байт. использование канала не увеличилось. получается так, что тормозом в данной ситуации является sendmsg(). Это сообщение отредактировал(а) boostcoder - 9.4.2011, 20:02 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
запустил параллельно тесту торрент-клиент, и все стало еще интересней
![]() в client_out.log стало наблюдаться такое: ![]() и такое: ![]() и такое: ![]() и т.д... в server_in.log такое: ![]() и такое: ![]() бред какой-то... последняя версия исходников во вложении. Это сообщение отредактировал(а) boostcoder - 9.4.2011, 20:33 Присоединённый файл ( Кол-во скачиваний: 1 ) ![]() |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
что то этот момент меня сильно смущает.. |
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
mes, что именно в этом моменте Вас смущает?
|
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |