Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 5, 2013 19:07:00

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Общение между юзерами (Twisted)

Я даже не знаю как реагировать на ваши вопросы, попросту нет слов. При чём здесь Twisted и серверная часть вообще? Вы не понимаете столь элементарных вещей, которые познаются буквально в первые 15 минут изучения языка (любого языка), это базовые типы, такие как (в данном случае) списки и целые числа и элементарные операции, вроде добавления элемента в список, удаление элемента из списка, увеличение и уменьшение целочисленной переменной на заданное число (в данном случае 1). Как эти два типа и четыре операции могут сбивать с толку я ума не приложу.

`numConnections` здесь (ну и это просто ОЧЕВИДНО же) это просто счётчик подключений, который нахрен не нужен, если есть, скажем `clients`, из примера выше. Я не понию как это может быть не понятно. Может стоит начать с книжки по основам Python. Даже если сильно хочется попрактиковать (безусловно похвальное желание), наверное всё же стоит сдерживать себя и прежде разобраться в основах, в частности с базовыми типами и операциями над ними. Потому что, если вы не понимаете что такое i += 1, о чём вообще можно с вами говорить. Если бы там хотя бы было `+= self`, а так…

Постарайтесь пожалуйста задавать в будущем вопросы чуть посложней, а то над этим я 4 дня думал :-).

..bw



Офлайн

#2 Авг. 5, 2013 21:53:50

Shyt_nik
Зарегистрирован: 2012-05-25
Сообщения: 22
Репутация: +  0  -
Профиль   Адрес электронной почты  

Общение между юзерами (Twisted)

ясно, спасибо за объяснения )
Да просто сам не понимаю почему у меня с twisted касяк я с django моментально разобрался и че по чем а тут встало и все тут


помогите с этим тогда разобраться, я что то пониаю а что то вообще отсутствует, просветите меня пожалуйсто

from twisted.internet.protocol import Factory, Protocol
from twisted.protocols.basic import LineReceiver
class ChatProtocol(LineReceiver):
    def __init__(self, factory): // не понимаю откуда взялся factory главное что за данные в нём?
        self.factory = factory
        self.name = None // это я понимаю как юзер который обратился
        self.state = "REGISTER" // это что провести условия и дать значению новому, типа авторизации
        
    def connectionMade(self):
        self.sendLine("What's your name?") // только подключился сразу спрашиваем кто он
        
    def connectionLost(self, reason):
        if self.name in self.factory.users: // users это вроде как словарь ключ:значение типа Вася:Register, только не понятно как он его нашел там по сути их много должно быть
                                                            
            del self.factory.users[self.name] // здесь удаляют именно того кто обратился
            self.broadcastMessage("%s has left the channel." % (self.name,)) // типа функция с текстом и в начале имя юзера
          
    def lineReceived(self, line):
        if self.state == "REGISTER": //вот началось проверка кто он 
            self.handle_REGISTER(line) // если он первый раз пришел то вызываем эту функцию и как понимаю в line его имя
        else:
            self.handle_CHAT(line) // тут по сути прошла авторизация и это думаю уже текст
            
    def handle_REGISTER(self, name): // вот наша авторизация
        if name in self.factory.users: // типа он проверил есть ли такой уже чел хотя для меня не ястность почему в if а не в for  как он умудрился проверить за раз
            self.sendLine("Name taken, please choose another.") // типа что то мы ему отправляем
            return
        self.sendLine("Welcome, %s!" % (name,)) // типа сервер здаровается или что то вроде этого но две строчки как то запутаны и ладом не понял
        self.broadcastMessage("%s has joined the channel." % (name,))
        self.name = name
        self.factory.users[name] = self // тут по сути он обавил нового в словарь
        self.state = "CHAT" // тут ему дали другой статус
        
    def handle_CHAT(self, message): // это типа он авторизирован с текстом
        message = "<%s> %s" % (self.name, message)
        self.broadcastMessage(message)// типа эта видать функция отвечает за отдачу и как я вижу for то вроде всем но жутко сомневаюсь
        
    def broadcastMessage(self, message):
        for name, protocol in self.factory.users.iteritems():
            if protocol != self:
                protocol.sendLine(message) // вот функция раздачи
                
class ChatFactory(Factory):
    def __init__(self):
        self.users = {}
        
    def buildProtocol(self, addr): //  не поиму что за данные в addr?
        return ChatProtocol(self) // это как бы наследие addr
      
if __name__ == '__main__':
    from twisted.internet import reactor
    reactor.listenTCP(8000, ChatFactory())
    reactor.run()

Отредактировано Shyt_nik (Авг. 5, 2013 23:05:42)

Офлайн

#3 Авг. 6, 2013 16:29:16

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Общение между юзерами (Twisted)

Shyt_nik
помогите с этим тогда разобраться, я что то пониаю а что то вообще отсутствует, просветите меня пожалуйсто
Слишком много вам придется объяснять - лучше прочитайте книгу по питону (как и советовал bw), затем - книгу по Twisted. Наврятли вы найдете желающих разжевывать (настолько подробно) вам все примеры твистеда.

P.S. Сюдя по вашим вопросам - братся за твистед вам еще рано, у этого фреймворка далеко не самая лучшая/полная документация и зачастую чтобы понять особенности работы нужно читать его код. Ну и без понимания таких паттернов как реактор и фабрика к нему вообще сложно подступиться.

Отредактировано s0rg (Авг. 6, 2013 16:38:50)

Офлайн

#4 Авг. 7, 2013 17:22:43

Shyt_nik
Зарегистрирован: 2012-05-25
Сообщения: 22
Репутация: +  0  -
Профиль   Адрес электронной почты  

Общение между юзерами (Twisted)

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

Офлайн

#5 Авг. 7, 2013 19:29:05

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Общение между юзерами (Twisted)

Shyt_nik,
Вам тут пытаются объяснить, что асинхронное программирование - это не для нубов, коего Вы судя по всему являете. Сначала научитесь уверенно писать классические студенческие программки, потом будет о чем толковать.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version