Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 29.12.2013
Сообщений: 13

Идентификация клиента в twisted

20.05.2015, 23:36. Показов 1869. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Я пишу сервер с использованием twisted. К серверу могут подключаться несколько клиентов, сервер может принимать от них сообщения и обрабатывать их. Результат должен отправлять только одному клиенту. Сразу после установления соединения клиент присылает на сервер строку вида “ima:name”, где в качестве name используется UserID. Нужно как-то идентифицировать клиент-ресивер по UserID, чтобы сервер мог знать, кому отправлять сообщения. Первое, что пришло в голову - запомнить номер клиента при подключении:
Python
1
2
num = len(self.factory.clients)-1
 print "this client is", num
Но клиенты могут подключаться и отключаться, номер клиента в self.factory.clients может меняться. Как решить проблему идентификации клиента-ресивера?
Далее привожу участок кода, отвечающий за подключение клиентов к серверу и обработку соообщения с UserID.
Python
1
2
3
4
5
6
7
8
9
10
11
12
class IphoneChat(Protocol):
    def connectionMade(self):
        self.factory.clients.append(self)
        print "clients are ", self.factory.clients
    def dataReceived(self, data):
        a = data.split(':')
        command = a[0]
        content = a[1]
        if command == "iam":
            self.name = content
            msg = self.name + " has joined"
            print msg
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.05.2015, 23:36
Ответы с готовыми решениями:

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

Идентификация com клиента
Добрый день, в общем такая проблема, есть out-proc com сервер(opc), к которому подключаются клиенты, можно ли как нибудь при подключении...

Идентификация клиента сервером
Как сервер точно может отличить разных клиентов с одним IP,чтобы переслать ему ответ(т.е. какой еще параметр идет кроме IP и порта для...

1
 Аватар для ivlevdenis
21 / 34 / 14
Регистрация: 23.07.2014
Сообщений: 148
05.07.2015, 01:27
сделай clients словарем, ключ собственно идентификатор, значение протокол
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class IphoneChat(Protocol):
 
    def connectionMade(self):
        print "clients are ", self.factory.clients
 
    def connectionLost(self, reason):
        if self.name in self.factory.clients:
            del self.factory.clients[self.name]
 
    def dataReceived(self, data):
        a = data.split(':')
        command = a[0]
        content = a[1]
        if command == "iam":
            self.name = content.strip()
            msg = self.name + " has joined"
            self.factory.clients[content] = self
            print(msg)
 
class IphoneFactory(Factory):
    def __init__(self):
        self.clients = {}
можно чуть по другому, добавить поле instances для протокола, и уже отслеживать по instance.name в self.__class__.instances, но со словарем в factory намного проще и удобнее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.07.2015, 01:27
Помогаю со студенческими работами здесь

Nio идентификация клиента по каналу SocketChannel
Здравствуйте. Голову сломал окончательно, но так и не удалось выяснить как по каналу сервер может определить номер подключенного клиента...

Идентификация клиента при связке INDY + SSL в событии IdHTTPServerCommandGet
Итак, имеем проект для взаимодействия по SSL протоколу с ключевыми компонентами IdHTTP: TIdHTTP; IdServerIOHandlerSSLOpenSSL:...

Twisted debugging
Наверняка кто-то сталкивался с подобной проблемой Возникла необходимость отдебажить код, в котором используется twisted, и получаю вот...

Twisted таймаут соединений
Здравствуйте! Пишу серверное приложение на python с использованием twisted. К сожалению не могу найти в доках как осуществить таймаут...

Socket или Twisted?
Всем привет, ищу лучшее решение для задачи: Есть 3 компьютера, им надо достигнуть консенсуса между собой по поводу какой-то информации и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru