Перейти к содержимому


библиотека для работы с ICQ протоколом


Сообщений в теме: 22

#1 arehscm

    Пользователь

  • Пользователи
  • PipPip
  • 65 сообщений

Отправлено 06 Ноябрь 2011 - 00:21

все здесь: www.icq-lib.3dn.ru
там же исходники на странице http://icq-lib.3dn.r...ex/zagruzki/0-6

#2 Demon36rus

    Пользователь

  • Пользователи
  • PipPip
  • 54 сообщений
  • ГородВоронеж

Отправлено 06 Ноябрь 2011 - 00:53

+1 спасибо за библиотеку :wink:

#3 dim@X

    Хостер ICQ чатов

  • Пользователи
  • PipPipPipPipPip
  • 1 538 сообщений
  • ГородОрел

Отправлено 06 Ноябрь 2011 - 01:55

Не корректно работает с разными кодировками =( А именно символы плохо переводит. Например жирный маркер , или другие как гама бета ... и прочите то есть те что есть в кодировках но нет на клавиатуре.

Хотя библиотека очень понравилась.. Занимаюсь садо мазо с ней третьи сутки... И мучаю мозг, не только свой

Сообщение отредактировал dim@X: 06 Ноябрь 2011 - 02:13


#4 arehscm

    Пользователь

  • Пользователи
  • PipPip
  • 65 сообщений

Отправлено 06 Ноябрь 2011 - 02:02

Просмотр сообщенияdim@X (06 Ноябрь 2011 - 01:55) писал:

Не корректно работает с разными кодировками =( А именно символы плохо переводит. Например жирный маркер , или другие как гама бета ... и прочите то есть те что есть в кодировках но нет на клавиатуре.

Хотя библиотека очень понравилась.. Занимаюсь садо мазо с ней третьи сутки... И мучаю не только свой мозг
зачем садо мазо ))

#5 dim@X

    Хостер ICQ чатов

  • Пользователи
  • PipPipPipPipPip
  • 1 538 сообщений
  • ГородОрел

Отправлено 06 Ноябрь 2011 - 02:14

На счет кодировок ничего не придумал еще?

#6 scano

    Профи

  • Пользователи
  • PipPipPipPipPip
  • 571 сообщений
  • ГородМосква

Отправлено 06 Ноябрь 2011 - 12:44

Знаком с такой либой, у раннее бывалой версии были свои кое какие недостатки, связанные с авторизацией и с работой контактами в целом. Вижу версия к этому времени уже обновилась и полагаю что пару неких улучшений есть.

#7 arehscm

    Пользователь

  • Пользователи
  • PipPip
  • 65 сообщений

Отправлено 06 Ноябрь 2011 - 21:10

какая именно кодировка нужна ? по умолчанию стоит CP1251, ставлю UNICODE - в некоторых клиентах не распознается. Ставлю UTF как в кофеинум - та же беда. куда деться от клиентов не понимающих ту или иную кодировку ? если у все клиенты чата есть в контакт листе, то можно выбирать кодировку каждому свою. или можно сделать чтобы ответное сообщение кодировалось также как и принятое. например уин1 прислал сообщение в кодировке UTF , ему отвечаем в UTF . УИН2 прислал сообщение в CР1251, ему отвечаем в СР1251. как то так

#8 dim@X

    Хостер ICQ чатов

  • Пользователи
  • PipPipPipPipPip
  • 1 538 сообщений
  • ГородОрел

Отправлено 07 Ноябрь 2011 - 06:17

Мне кажется просто теряются байты вот и получается неразбериха. CAP_UTF8_GUID не конкретные она посылает в ютф 8 даже тех кто не не поддерживает ее ... Нужно от сюда начинать наверное

Сообщение отредактировал dim@X: 07 Ноябрь 2011 - 06:18


#9 arehscm

    Пользователь

  • Пользователи
  • PipPip
  • 65 сообщений

Отправлено 07 Ноябрь 2011 - 11:45

Просмотр сообщенияdim@X (07 Ноябрь 2011 - 06:17) писал:

Мне кажется просто теряются байты вот и получается неразбериха. CAP_UTF8_GUID не конкретные она посылает в ютф 8 даже тех кто не не поддерживает ее ... Нужно от сюда начинать наверное
байты терятся не могут.. иначе бы вобще ничего не работало. CAP_UTF8_GUID - это идентификатор "возможностей" ICQ клиента, которым он сообщает другим клиентам что поддерживет кодировку УТФ и не больше. многие клиенты лепят эту возможность, а по факту УТФ не поддерживают

#10 scano

    Профи

  • Пользователи
  • PipPipPipPipPip
  • 571 сообщений
  • ГородМосква

Отправлено 07 Ноябрь 2011 - 14:48

Просмотр сообщенияarehscm (07 Ноябрь 2011 - 11:45) писал:

байты терятся не могут.. иначе бы вобще ничего не работало. CAP_UTF8_GUID - это идентификатор "возможностей" ICQ клиента, которым он сообщает другим клиентам что поддерживет кодировку УТФ и не больше. многие клиенты лепят эту возможность, а по факту УТФ не поддерживают
Вы правы! Однажды когда я тестировал Jimm клиент (меня на тот раз интересовала кодировка), в QIP'е установил кодировку поддерживающий юникод и в Jimm'е ровным счётом также. И после нескольких отосланных сообщений я обратил внимание что Jimm не поддерживает юникод, хоть даже параметр в настройке присутствует.
Как его (Jimm) не вертел, результат оставался тот же.
Тот же тест делал на других прогах для ПК, результат OK.

Отсюда значит, что кодировку каким то образом может не поддерживать сам клиент через которую сидит пользователь.

#11 dim@X

    Хостер ICQ чатов

  • Пользователи
  • PipPipPipPipPip
  • 1 538 сообщений
  • ГородОрел

Отправлено 07 Ноябрь 2011 - 23:15

Ну а в кофейне как там там же вроде все работает норм... странно.. простите просто не знаю как работает протокол вот гадаю

Ну а в кофейне как там там же вроде все работает норм... странно.. простите просто не знаю как работает протокол вот гадаю

#12 spec

    Администратор

  • Администраторы
  • 2 399 сообщений
  • ГородКаменск-Уральский

Отправлено 08 Ноябрь 2011 - 06:09

Откопал свое письмо Павлу от 2008 года. Эти изменения вроде так и не вошли в основную ветку библиотеки. Может натолкнет на дальнейшие мысли.

Цитата

Наткнулся на очередную ошибку следующего характера. Когда в QIP стявыт другой ИД клиента, сообщения начинают отправляться в CP1251 вместо UTF8, при этом icqlib воспринимает их неверно. Ошибка, насколько я понял, кроется в следующем куске кода класса IncomingMessage__4_7:

private void parseType2Message(int position, byte[] data) throws ConvertStringException {
/* Skipping 4 bytes till message (finally !)[i guess you could make it a lil bit more complicated mr AOL !] */
position += 4;

/* Retreiving message */
message = StringTools.utf8ByteArrayToString(data, position, msgLen.getValue() - 1);
position += message.length();

Логично предположить, что сюда необходимо добавить "message = StringTools.byteArray1251ToString(data, position, msgLen.getValue() - 1);", но вопрос в том, как тут определить кодировку?

Цитата

Я нашел следующее решение этой проблемы. Взято как всегда из джима.


private void parseType2Message(int position, byte[] data) throws ConvertStringException {
/* Skipping 4 bytes till message (finally !)[i guess you could make it a lil bit more complicated mr AOL !] */
position += 4;

/* Retreiving message length */
RawData msgLen = new RawData(data, position, 2);
msgLen.invertIndianness();
position += 2;

/* Retreiving message */
int guidLen = data[position + msgLen.getValue()+8];
if(guidLen==38){
if(StringTools.byteArrayToString(data, position + msgLen.getValue() + 8 +4, guidLen).equals(
"{0946134E-4C7F-11D1-8222-444553540000}"))

message = StringTools.utf8ByteArrayToString(data, position, msgLen.getValue() - 1);
} else {

message = StringTools.byteArray1251ToString(data, position, msgLen.getValue() - 1);
}
position += message.length();

/* Retreiving foreground info */
foreground = new RawData(data, position, 4);
position += 4;

/* Retreiving background info */
background = new RawData(data, position, 4);
position += 4;
}


#13 dim@X

    Хостер ICQ чатов

  • Пользователи
  • PipPipPipPipPip
  • 1 538 сообщений
  • ГородОрел

Отправлено 08 Ноябрь 2011 - 08:44

Наткнулся на казус. Зашел в чат с jimm Best сначала все символы до ужаса кривые, вместо них знаки вопросов.
Меняем в настройках ид клиента на ICQ7. Получаем те же символы и чудо мы все видим.

#14 arehscm

    Пользователь

  • Пользователи
  • PipPip
  • 65 сообщений

Отправлено 08 Ноябрь 2011 - 11:25

Просмотр сообщенияdim@X (08 Ноябрь 2011 - 08:44) писал:

Наткнулся на казус. Зашел в чат с jimm Best сначала все символы до ужаса кривые, вместо них знаки вопросов.
Меняем в настройках ид клиента на ICQ7. Получаем те же символы и чудо мы все видим.
исходники открыты - проверь. идентификатор клиента никаким образом не завязан на кодировку отправляемого сообщения. остается одно объяснение - такой алгоритм обработки сообщения заложен в самом этом jimm Best

to Spec: не, вопрос как я понимаю не в приеме сообщений, т.к. библиотека понимает все кодировки - UTF, CP1251, UNICODE и умеет различать в какой кодировке оно прислано. проблемы возникли с тем что разные клиенты адаптированы к приему какой то одной кодировки, а с другими работаю либо совсем некорректно либо криво.

Сообщение отредактировал arehscm: 08 Ноябрь 2011 - 11:32


#15 Demon36rus

    Пользователь

  • Пользователи
  • PipPip
  • 54 сообщений
  • ГородВоронеж

Отправлено 18 Август 2012 - 16:31

c входящими сообщениями тоже проблема, символы например такой: √ιק , тоже не распознаются пробывал с icq 7 ,c rnq

Сообщение отредактировал Demon36rus: 18 Август 2012 - 16:35


#16 Jim

    Новичок

  • Пользователи
  • Pip
  • 11 сообщений

Отправлено 16 Сентябрь 2012 - 02:08

Помогите найти причину: Уин не подключаеться с использованием даной библиотеки
Вот что пишет:


Авторизация успешно завершена
ICQlib log file name is not valid
Connectiong to BOSS server success
boss socket = Socket[addr=/64.12.30.115,port=5190,localport=54754]
Установлена связь с BOSS сервером
true

потом через время:

последний отправленный пакет = Byte[] data = new Byte[] {
42, 4, 0, 8, 0, 0};
Error at Receiver class, run() method: class java.net.SocketException: Software caused connection abort: recv failed
Установлен новый статус: Не в сети
Exit thread 1
Exit thread 4
Произошло отключение ICQ# *******. Причина: Выполнен выход в офлайн по требованияю пользователя
Exit thread 2
ПОСТРОЕНИЕ УСПЕШНО ЗАВЕРШЕНО (общее время: 33 секунд)

#17 Пушкожук

    Профи

  • Специалисты
  • PipPipPipPipPip
  • 617 сообщений
  • ГородМосква

Отправлено 16 Сентябрь 2012 - 07:40

Почему нельзя использовать другую библиотеку?
Ты для jimbot её используешь или для чего-то другого?

#18 Jim

    Новичок

  • Пользователи
  • Pip
  • 11 сообщений

Отправлено 16 Сентябрь 2012 - 13:36

Просмотр сообщенияПушкожук (16 Сентябрь 2012 - 07:40) писал:

Почему нельзя использовать другую библиотеку?
Ты для jimbot её используешь или для чего-то другого?
Потому что тут все просто и понятно.
Для другого

Сообщение отредактировал Jim: 16 Сентябрь 2012 - 13:37


#19 Пушкожук

    Профи

  • Специалисты
  • PipPipPipPipPip
  • 617 сообщений
  • ГородМосква

Отправлено 16 Сентябрь 2012 - 22:41

Тогда покажи свой код.

#20 Jim

    Новичок

  • Пользователи
  • Pip
  • 11 сообщений

Отправлено 17 Сентябрь 2012 - 04:16

Просмотр сообщенияПушкожук (16 Сентябрь 2012 - 22:41) писал:

Тогда покажи свой код.
там есть пример, то и пытаюсь запустить





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей