myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
 
Ответить в данную темуНачать новую тему

> Проблемы с общением хаб--клиент

Теги
Нет тегов для показа
keyviewer
сообщение 29.8.2014, 16:59
Сообщение #1


Абсолютный новичок


Группа: Пользователи
Сообщений: 3
Регистрация: 29.8.2014
Пользователь №: 12 495
Спасибо сказали: 0 раз




Добрый день, решил изучить протокол NMDC и быстренько проверить свои знания.
Использовал сначала python третей ветки, но столько костылей пришлось делать...
Перешел на вторую. Но не получается пройти дальше по плану!
CODE
# -*- coding: utf-8 -*-
import socket,re
nmdc=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
nmdcServer = "192.168.0.2"
nmdcPort = 411
nmdc.connect((nmdcServer, nmdcPort))
def senD(data):
print u'Клиент > ',data[:40]
nmdc.send(data)
def L2K(lock):
lock = re.findall('\$Lock[\s](.*?)[\s]', lock)[0]
key = {}
for i in xrange(1, len(lock)):key[i] = ord(lock[i]) ^ ord(lock[i-1])
key[0] = ord(lock[0]) ^ ord(lock[len(lock)-1]) ^ ord(lock[len(lock)-2]) ^ 5
for i in xrange(0, len(lock)):key[i] = ((key[i]<<4) & 240) | ((key[i]>>4) & 15)
out = ""
for i in xrange(0, len(lock)):out += unichr(key[i])
out = out.replace(u'\0', u'/%DCN000%/').replace(u'\5',u'/%DCN005%/').replace(u'\44', u'/%DCN036%/')
out = out.replace(u'\140', u'/%DCN096%/').replace(u'\174',u'/%DCN124%/').replace(u'\176', u'/%DCN126%/')
return out.encode('utf-8')
BR=0
while True:
data = nmdc.recv(2048)
print u'Хаб > ',data
#if "$Lock" in data:
# senD("$Key %s|$ValidateNick %s|" % (L2K(data), 'test')) РАЗРЫВ СОЕДИНЕНИЯ!
if "$Lock" in data:
senD("$Supports QuickList|$Key %s|" % (L2K(data)))
if data == '':# защита от принтовки пустых строк при разрыве соединения
BR+=1
if BR==10:break
"""
Хаб: --> $Lock [Код] Pk=[PrimaryKey]|
Клиент: --> $Key [Рассчитанный_ключ]|$ValidateNick [Ник]|
Хаб: --> $HubName [Имя_хаба]|$Hello [Ник]|
Клиент: --> $Version [Версия]|$GetNickList|$MyINFO [Строка]|
Хаб: --> Отсылает список пользователей.
"""

Сначала думал, что может ключ неверный, но при отправки senD("$Supports QuickList|$Key %s|" % (L2K(data)))
Получал: $Supports QuickList| 20
Значит с ним все в порядке, я уже не знаю... Может что-то не так с "$Key %s|$ValidateNick %s|"
Помогите пожалуйста разобраться с ним.
Go to the top of the page
+Quote Post
Nickolya
сообщение 30.8.2014, 21:34
Сообщение #2


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 724
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 770 раз




Не знаю, сильно ли помогу. Может я уже сильно отстал от хабов, но:
1. хабы работают не в утф (поправьте, если уже не так)
2. очень поможет описанные тут примеры: Описание Протокола NMDC
3. есть готовые примеры на пхп, можете на них опираться (искать на форуме), как пример: Public PHP hublist by Enyby


Спасибо сказали:
Go to the top of the page
+Quote Post
keyviewer
сообщение 30.8.2014, 23:59
Сообщение #3


Абсолютный новичок


Группа: Пользователи
Сообщений: 3
Регистрация: 29.8.2014
Пользователь №: 12 495
Спасибо сказали: 0 раз




Цитата(Nickolya @ 30.8.2014, 22:34) *
Не знаю, сильно ли помогу. Может я уже сильно отстал от хабов, но:
1. хабы работают не в утф (поправьте, если уже не так)
2. очень поможет описанные тут примеры: Описание Протокола NMDC
3. есть готовые примеры на пхп, можете на них опираться (искать на форуме), как пример: Public PHP hublist by Enyby

Я кстати это тоже подозреваю, но странно то, что при quick ключ подходит, хотя он закодирован в UTF-8, надо еще потестить мне, потом отпишусь о результатах!
Спасибо за ответ =)
Я брал оттуда инфу как раз таки, кстати в локе для питона имеются символы как: u'', что означает кодировку именно в UTF
Странно это как-то...
Go to the top of the page
+Quote Post
Setuper
сообщение 31.8.2014, 9:38
Сообщение #4


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1694 раза




Обратите внимание на характеристику QuickList.
Если хаб поддерживает данную характеристику, и вы отсылаете её на хаб, то последовательность входа немного другая. В частности, на хаб не следует отсылать команду $ValidateNick.

см. Последовательность входа на хаб, который поддерживает характеристику QuickList


Спасибо сказали:
Go to the top of the page
+Quote Post
Alexey
сообщение 31.8.2014, 19:08
Сообщение #5


7 квадратиков
*******

Группа: Модераторы
Сообщений: 791
Регистрация: 21.1.2009
Пользователь №: 1 895
Спасибо сказали: 286 раз




Цитата(keyviewer @ 31.8.2014, 0:59) *
странно то, что при quick ключ подходит, хотя он закодирован в UTF-8

Если тестируется на птоке, то там правильность ключа не проверяется у клиентов, поддерживающих расширения протокола.


Спасибо сказали:
Go to the top of the page
+Quote Post
keyviewer
сообщение 31.8.2014, 23:14
Сообщение #6


Абсолютный новичок


Группа: Пользователи
Сообщений: 3
Регистрация: 29.8.2014
Пользователь №: 12 495
Спасибо сказали: 0 раз




Спасибо, подумаю еще, но попозже, недельки через две. Просто счастлив буду если все с ходу получиться, конечно, перед этим начитавшись документации и вдохновленный новыми силами на подвиги super_man.gif
И да, просто безумно рад, что документация у Вас на русском языке и причем полная! Порой забугорные читать противно, но они содержат много всего полезного =)
Go to the top of the page
+Quote Post
Saymon21
сообщение 23.9.2014, 21:30
Сообщение #7


Site Reliability Engineer
*********

Группа: Модераторы
Сообщений: 1 772
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 478 раз




Полная документация по nmdc протоколу? Есть тут же на форуме.
Кстати. У меня тут есть запил nmdc пингера на питоне втором. Ваял как-то давным на досуге. Нельзя отнести к стейблу, но работал нормально с ptokax, verlihub, rushub. C flexhub были проблемы. Дальше не помню тестировал или нет. Допиливать там надо тоже не мало, и ваще лучше перевести на какой нить twisted. Щас там голый сокет. Могу как нить куда нить скинуть.

зы. Полурабочий самопальный адц пингер есть на питоне даже.
Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Topic has attachmentsЧат клиент для DC++ (только чат)
5 мамин_парень 181 15.10.2017, 15:22 Посл. сообщение: =Alexandr=
No new Topic has attachmentsDDD++ – лёгкий и быстрый DC++ клиент
Преднастроенный клиент с готовыми списками хабов
114 Damaks 50 813 19.5.2016, 10:06 Посл. сообщение: dimetro
No New Posts DC-клиент с картинкой вместо фона
2 Анима 1 448 29.3.2015, 20:54 Посл. сообщение: MIKHAIL
No New Posts Клиент для Mydc
Android
5 Артём 2 306 8.3.2015, 12:24 Посл. сообщение: Saymon21
No new Topic has attachmentsКлиент: LiveDC
Наверное, самый молодой из клиентов
29 Erty Hackward 10 403 4.4.2014, 14:20 Посл. сообщение: Angel_D
No new votes Опрос: Topic has attachmentsМобильный Dc Клиент
JAVA
26 Wariner 15 069 23.11.2013, 16:00 Посл. сообщение: Артём
No New Posts DC-Клиент для iPhone
Существует ли он?
2 X-Sky 3 118 13.10.2013, 17:54 Посл. сообщение: X-Sky
No New Posts От: Клиент: LiveDC
От темы с ID: 5484
0 Артём 1 361 10.9.2013, 10:03 Посл. сообщение: Артём
No New Posts Проблемы с Greylink на Ptokax хабе
0 tammi_0909 2 397 12.2.2013, 14:29 Посл. сообщение: tammi_0909
No New Posts ВАЖНО: Topic has attachmentsКлиент: Apexdc++
8 Setuper 10 158 13.11.2012, 0:54 Посл. сообщение: Alexey
No New Posts Пишу свой клиент
13 Charlz_Klug 5 327 30.9.2012, 10:14 Посл. сообщение: Saymon21
No New Posts Проблемы с Webhubconfig
1 jekasumy 1 927 4.3.2012, 23:46 Посл. сообщение: Saymon21
No new Непонятные проблемы с уcтановкой Rushub на Freebsd 8.2 x64
18 LEXSOR 6 429 20.10.2011, 9:48 Посл. сообщение: mariner
No New Posts Проблемы с установкой LUA-GD
1 HunteX 3 929 20.7.2011, 8:43 Посл. сообщение: mariner
No New Posts От: DDD++ - первый мультипиринговый dc-клиент
От темы с ID: 4706
2 Damaks 2 638 25.6.2011, 11:53 Посл. сообщение: Damaks

 



RSS Сейчас: 21.10.2017, 7:44