Форум сайта python.su
Здравствуйте!
Помогите разобраться пожалуйсто
# -*- coding: utf-8-*- from twisted.internet.protocol import Factory, Protocol class Ret(Protocol): def connectionMade(self): print "соединение установлено" def connectionLost(self, reason): print "Соединение разорвано " def dataReceived(self, data): print "Полученные данные", data self.writeData(str(data)) def writeData(self, data): self.transport.write(data) class MyFactory(Factory): protocol = Ret if __name__ == '__main__': from twisted.internet import reactor reactor.listenTCP(843, MyFactory()) reactor.run()
Офлайн
Офлайн
Здравствуйте! s0rg
Пример нечего не говорит, это когда познаешь тогда поимешь но смысла от него потом уже и нет )
Меня интересует как происходит связь, как сервер запоминает юзеров, под чем под аипишниками или какие то значения им дает и если он их сохраняет, то где их искать и нужно ли клиенту завершать соединение после отдачи данных или он должен продолжать весеть
Офлайн
Shyt_nikТогда вот это
под чем под аипишниками или какие то значения им дает и если он их сохраняет, то где их искать и нужно ли клиенту завершать соединение после отдачи данных или он должен продолжать весеть
Офлайн
Спасибо! ответ глобальный, у меня есть такая книга ) прочитал что то не совсем нашел ответы на именно этот вопрос, хотя она вроде еще на анг за этого может и не понял
Офлайн
Shyt_nikА в чем проблема то? По этому примеру
Пример нечего не говорит, это когда познаешь тогда поимешь но смысла от него потом уже и нет )
Отредактировано PooH (Авг. 1, 2013 05:18:20)
Офлайн
> как сервер запоминает юзеров, под чем под аипишниками или какие то значения им дает и если он их сохраняет, то где их искать
Как сделаешь, так и будет. В указанном примере это происходит в фабрике (она одна на всех) в списке `clients`. Это нормальный пример, хотя “список” можешь куда угодно запихать, главное тут что фабрика общая для всех соединений. Соединения отождествляются с протоколами и сохранение их доступными это твоя забота, а не Twisted (если не брать в расчёт готовые реализации всяких там протоколов, типа ssh).
> нужно ли клиенту завершать соединение после отдачи данных или он должен продолжать весеть
Очень странный вопрос, в чём он собственно заключается? Не нужно соединение – закрывай, нужно – оставляй открытым, вроде просто :-). Сейчас попробую включить экстрасенса. Кажется получилось. Это что бы сервер получил посланные данные? Можно сразу закрывать соединение: `transport.loseConnection()`
..bw
Офлайн
спасибо s0rg книга и правда хорошая я что то видать вначале ее просто проигнорировал
bw
я не занимался раньше серверной частью и не знаю
Отредактировано Shyt_nik (Авг. 5, 2013 18:40:15)
Офлайн
есть еще какие нить книги по twisted полезные?
# -*- coding: utf-8-*- from twisted.internet.protocol import Factory, Protocol class Ret(Protocol): def __init__(self, factory): self.factory = factory def connectionMade(self): self.factory.numConnections += 1 def connectionLost(self, reason): self.factory.numConnections -= 1 def dataReceived(self, data): pass class MyFactory(Factory): numConnections = 0 def buildProtocol(self, addr): return Ret(self) if __name__ == '__main__': from twisted.internet import reactor reactor.listenTCP(8000, MyFactory()) reactor.run()
Офлайн
Нет в вашем примере обмена сообщениями не происходит, в таком виде приложение просто считает количество подключений увеличивая переменную numConnections при соединении (connectionMade) и уменьшая при потере клиента (connectionLost)
Офлайн