дано - пару сотен клиентов каждый из которых имеет коннект на некий сервер
необходимо - в систему зашел очередной клиент и присоединился на сервер, ему необходимо дать параметры присоединенного к серверу клиента с лучшими характеристиками связи между ними.
Измерения пинга для каждого из клиента хотелось бы избежать. Статистику (какую) можно накапливать после присоединения клиентов.
Сдается мне что ета задача уже решена и есть готовые базы данных и программное обеспечение. купить в обзем то не проблема. Идеи тоже принимаются. Если что тонепонятно готов дать дополнительные разъяснения.
задачка :)
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
Re: задачка :)
это тебе надо с народом из Электроник Артс поговорить.... стандартная байда для игрушек. 

-
- Частый Гость
- Сообщения: 20
- Зарегистрирован: 10 окт 2007, 01:59
Re: задачка :)
Если сервер на Линухе, то есть 2 варианта:
1) Socket option TCP_INFO возвращает структуру tcp_info где много чего интересного про сокет есть включая RTT, количество ретрансмитов, количество потерянных пакетов и т.д..
2) Анализировать /proc/net/tcp как это делает 'netstat'. Но инфы гораздо меньше чем при (1).
Для других юниксов и форточек аналогичной функциональности не знаю. В BSD есть sysctl TCPCTL_STATS, но он дает инфу о TCP протоколе в целом. Тоже самое в Виндоус если использовать этот способ http://www.codeproject.com/internet/winnetstat.asp Но если я правильно понял, это не то что Вам надо.
1) Socket option TCP_INFO возвращает структуру tcp_info где много чего интересного про сокет есть включая RTT, количество ретрансмитов, количество потерянных пакетов и т.д..
2) Анализировать /proc/net/tcp как это делает 'netstat'. Но инфы гораздо меньше чем при (1).
Для других юниксов и форточек аналогичной функциональности не знаю. В BSD есть sysctl TCPCTL_STATS, но он дает инфу о TCP протоколе в целом. Тоже самое в Виндоус если использовать этот способ http://www.codeproject.com/internet/winnetstat.asp Но если я правильно понял, это не то что Вам надо.
- sz
- Маньяк
- Сообщения: 1266
- Зарегистрирован: 17 фев 2003, 19:34
Re: задачка :)
В стандартной сишной библиотеке есть нужная тебе функция:aissp писал(а):дано - пару сотен клиентов каждый из которых имеет коннект на некий сервер
необходимо - в систему зашел очередной клиент и присоединился на сервер, ему необходимо дать параметры присоединенного к серверу клиента с лучшими характеристиками связи между ними.
Измерения пинга для каждого из клиента хотелось бы избежать. Статистику (какую) можно накапливать после присоединения клиентов.
Сдается мне что ета задача уже решена и есть готовые базы данных и программное обеспечение. купить в обзем то не проблема. Идеи тоже принимаются. Если что тонепонятно готов дать дополнительные разъяснения.
rand()
Работает очень быстро и задачу, в целом, решает.
- aissp
- Маньяк
- Сообщения: 2710
- Зарегистрирован: 07 ноя 2005, 09:51
Re: задачка :)
vti - от спасибо за напоминание, она правда к другой области приложиться, но все равно скромное человеческое спасибо 
sz - вот предложил папа обратиться к електроник артс
вот и ответ не заржавел.

sz - вот предложил папа обратиться к електроник артс

- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: задачка :)
А чо, если просто послать маленький спец-message клиенту чтобы он его сразу назад отразил и примитивно померить round-trip time.
И так нескольро раз подряд
. Я в свое время так и делал, время почти в точности соответсвует времени пинга, если сервер и клиент не очень заняты...
И так нескольро раз подряд

- aissp
- Маньяк
- Сообщения: 2710
- Зарегистрирован: 07 ноя 2005, 09:51
Re: задачка :)
Долго и клиентов жалко, не понятно новый клиент он кароший или плохой с ним разберуться после коннекта а вот разрешать ему слать пакеты на всех участнегов низзя - не кошерно 
