задачка :)

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
aissp
Маньяк
Сообщения: 2710
Зарегистрирован: 07 ноя 2005, 09:51

задачка :)

Сообщение aissp »

дано - пару сотен клиентов каждый из которых имеет коннект на некий сервер
необходимо - в систему зашел очередной клиент и присоединился на сервер, ему необходимо дать параметры присоединенного к серверу клиента с лучшими характеристиками связи между ними.

Измерения пинга для каждого из клиента хотелось бы избежать. Статистику (какую) можно накапливать после присоединения клиентов.

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

Re: задачка :)

Сообщение папа Карло »

это тебе надо с народом из Электроник Артс поговорить.... стандартная байда для игрушек. :)
vti
Частый Гость
Сообщения: 20
Зарегистрирован: 10 окт 2007, 01:59

Re: задачка :)

Сообщение vti »

Если сервер на Линухе, то есть 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 Но если я правильно понял, это не то что Вам надо.
Аватара пользователя
sz
Маньяк
Сообщения: 1266
Зарегистрирован: 17 фев 2003, 19:34

Re: задачка :)

Сообщение sz »

aissp писал(а):дано - пару сотен клиентов каждый из которых имеет коннект на некий сервер
необходимо - в систему зашел очередной клиент и присоединился на сервер, ему необходимо дать параметры присоединенного к серверу клиента с лучшими характеристиками связи между ними.

Измерения пинга для каждого из клиента хотелось бы избежать. Статистику (какую) можно накапливать после присоединения клиентов.

Сдается мне что ета задача уже решена и есть готовые базы данных и программное обеспечение. купить в обзем то не проблема. Идеи тоже принимаются. Если что тонепонятно готов дать дополнительные разъяснения.
В стандартной сишной библиотеке есть нужная тебе функция:
rand()
Работает очень быстро и задачу, в целом, решает.
Аватара пользователя
aissp
Маньяк
Сообщения: 2710
Зарегистрирован: 07 ноя 2005, 09:51

Re: задачка :)

Сообщение aissp »

vti - от спасибо за напоминание, она правда к другой области приложиться, но все равно скромное человеческое спасибо :)

sz - вот предложил папа обратиться к електроник артс :) вот и ответ не заржавел.
Аватара пользователя
Marmot
Графоман
Сообщения: 39279
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: задачка :)

Сообщение Marmot »

А чо, если просто послать маленький спец-message клиенту чтобы он его сразу назад отразил и примитивно померить round-trip time.
И так нескольро раз подряд :). Я в свое время так и делал, время почти в точности соответсвует времени пинга, если сервер и клиент не очень заняты...
Аватара пользователя
aissp
Маньяк
Сообщения: 2710
Зарегистрирован: 07 ноя 2005, 09:51

Re: задачка :)

Сообщение aissp »

Долго и клиентов жалко, не понятно новый клиент он кароший или плохой с ним разберуться после коннекта а вот разрешать ему слать пакеты на всех участнегов низзя - не кошерно :)
Ответить