Форум сайта python.su
0
Запустил сервер, обнаружил ощибку сдесь conect.recv() Оказываебтся так нельзя. Не думал даже что сервер не может просто слушать соеденение. Вобще думаю проблему можно опять же решить большим кол-вом тредов. Чтоб Тред принимал данные от клиента, и сразу закрывался. Таким оразом опять же. идеально проблема не решится, НО, вероятность что 1021 будут сидеть и нихрена не делать, а только пялится в монитор не так уж и велика. Как только клиент отправит сообщение тред освободится для другого клиента. Хммм. да что я тут демагогию развожу, вот код:
def get_sms(sub):
global sms
sms = sub.recv(1024)
if sms:
for x in users:
x[].send(sms)
while 1:
for x in users:
thread.start_new(get_sms,(x[0]))
Отредактировано (Авг. 28, 2010 22:56:04)
Офлайн
13
CryptSpiritЭй, а чем мое решение не устроило-то? Или вы его пропустили? Я же написал - там под 3000 соединений открылось и обломался ваш клиент для крэш-тестов, сервер бы еще принимал и принимал. Я что-то пропустил?
Если вы читали посты выше основная проблема создание тредов. В этом ограничение.
Офлайн
0
Ваш пример Ed подходит. Я писал про код Alex_Kutsan. Сервер в моем случае очередь строить не должен. Нужно сервер онлайн игрухи а не чат
Отредактировано (Авг. 29, 2010 07:34:12)
Офлайн
33
Я вот подумал: а что это а игра, в которой нужно поддержать такое кол-во одновременно играющих клиентов?
Они все в одной локации (или комнате) или одновременно решают одну и ту же задачу?
А как они будут отображаться на клиентах? Ведь их клиентские компьютеры просто загнуться с выводом такого кол-ва информации. Причем вместе со своим сетевым интерфейсом, пытающимся получить информацию обо всех этих тысячах других игроков.
Что-то я сомневаюсь в правильности выбора архитектуры…
Офлайн
0
LexanderМне не хватит сил все рассказать. Но пару моментов просвещу
а что это а игра
LexanderНу нпс на локации игрока будут просчитываться трэдом подключения. Да и дело не в том сколько людей будет играть онлайн, а в том что бы создать основу (сервер) который как совковые пионеры должен быть всегда готов.
поддержать такое кол-во одновременно играющих клиентов
LexanderИ зачем их клиентам так много информации. Клиент если честно будет работать по правилу меньше знаешь лучше спишь.
Ведь их клиентские компьютеры просто загнуться с выводом такого кол-ва информации. Причем вместе со своим сетевым интерфейсом, пытающимся получить информацию обо всех этих тысячах других игроков.
LexanderЯ тоже. Потому то сейчас и выбираю)))))
Что-то я сомневаюсь в правильности выбора архитектуры…
Офлайн
32
если все подключения будут через один хост, то “конект-шлюз” написать на с++, который будет раскидывать конекты по хостам (распределение нагрузки), а все остальное на питоне ибо он проще, и на нем разработка будет быстрее.
а вообще лучше сразу делать распределенную систему - нехватает ресурсов, воткнул ещё сервак и порядок. с таким кол-вом клиентов все равно одного хоста не хватит(за исключением того если хостить чат или тетрис)
Офлайн
33
CryptSpiritСобрались 500 человек и зашли в одну комнату. И все.
И зачем их клиентам так много информации. Клиент если честно будет работать по правилу меньше знаешь лучше спишь.
Офлайн
0
o7412369815963Уже как сутки делаю)
а вообще лучше сразу делать распределенную систему
LexanderНе вижу здесь проблемы
Сообщать каждому клиенту о передвижениях других игроков надо?
LexanderУ меня графика будет просто ( хочется ретро типа старика первого и дьябло второго, но конечно покрасивше)
Отрисовывать клиентам передвижения других игроков надо?
LexanderПодобное будет сбалансировано между клиентом и сервером.
Вот вам нагрузка на процессор, память и видео.
LexanderКонечно же это все мои слова не известно как оно все будет. Но если в крации что уже планируется:
Что делать будете?
Офлайн
0
CryptSpiritПроблема простая. Каждая передача от одного клиента к другому инфы это трафик. Вам намекают на то, что вы раньше уткнетесь в пропускную способность канала, нежели в ограничение на количество подключений.
Сообщать каждому клиенту о передвижениях других игроков надо?
Не вижу здесь проблемы
Офлайн
0
Alex2ndr
Разработку игры имхо надо начинать не с сетевого сервера, способного обслужить более 1000 клиентов, а с сюжета
CryptSpirit
если в крации
CryptSpiritИгра крутиться в голове не первый год (от сюдого продумано множество деталей).
задумка не сколько сервера, а игры
Alex2ndrбоже какой изврат. Сложно и долго объяснять что будет вместо этого. Но поверьте. Я ни сел с бухты барахты писать игру. К этому подхожу осторожно и основательно. Желание очень сильное. И идей полный чемодан.
одного клиента к другому
Офлайн