2010-12-27 1 views
3

Хорошо, проблема должна быть тривиальной, но я не могу добраться до нее.Отправить сообщение XMPP (Smack)

У меня есть два пользователи А & B

Их JID для этого примера будет A @ 123 и B @ 123, где 123 является IP сервера.

Я посылаю сообщение от A-> B, используя следующий код:

chat = chatmanager.createChat(username, 
    new MessageListener() { 
     public void processMessage(Chat chat, Message message) {}}); 
    String sendUsername = username + "@123"; 
    Message msgObj = new Message(sendUsername, Message.Type.chat); 
    msgObj.setBody(message); 

    chat.sendMessage(msgObj); 

Я зашит в IP, так что я 100% уверен, что я придаю «@ 123» в конец прозвища, поэтому нет неправильных JID.

Так A @ 123 отправляет msgObj в B @ 123. Так я понял, что XMPP-обмен сообщениями работает. То, что вы не можете отправить из A-> B, но это должен быть A @ 123 -> B @ 123.

Однако, похоже, что мой сервер думает иначе. Он постоянно информирует меня о следующей ошибке:

2010.12.27 19:02:52 [org.jivesoftware.openfire.session.LocalOutgoingServerSession 
.createOutgoingSession(LocalOutgoingServerSession.java:258)] Error trying to 
connect to remote server: A(DNS lookup: A:5269) 
java.net.UnknownHostException: A 

В А и списке Б на сервере Openfire, они друг с другом, как контакт с соответствующим JIDs (имя пользователя @ 123).

Может ли кто-нибудь дать представление? Я потерялся.

Редактировать

Я пытаюсь использовать Wireshark, чтобы поймать XML отправлялась и с сервера Openfire, чтобы определить, является ли получатель сообщения правильно назвали (A @ 123 вместо A).

При использовании Wireshark я получил это как XML, передаются:

\302\3469\223\341\3429\000\000\000\000\377\377 

Я отключил SSL, я подключен не-надежно. Я не уверен, почему я получаю XML-тип SSL, и что это такое?

+0

Это может быть вызвано только тем, что вы отправили что-то A вместо A @ 123. Проверьте XML, который вы фактически отправляете на сервер (используя Wireshark, если Smack/Openfire не предоставляют проверку потока). – MattJ

+0

Звучит хорошо Мэтт.Раньше не думал о Wireshark. Я не мог понять, как Smack отправил бы A, если бы я жестко закодировал @IP. Я дам вам знать результаты. – Adam

+0

Wireshark не предоставляет всю необходимую информацию. Я считаю, что это связано с тем, что я подключаюсь к порту 5222. XML это дает мне серию цифр вместо фактического XML. Не знаете, как это пройти. – Adam

ответ

2

Оказывается, ответ на эту проблему был тем, что было просто упущено.

В первой строке кода:

chat = chatmanager.createChat(username, new MessageListener() { 
      public void processMessage(Chat chat, Message message) {} 
     }); 

Я не сделал переменную «имя» есть правильное расширение IP. Так это было просто «А» вместо «A @ 123»

Перемещение «sendUsername» в начало и изменение «имя пользователя» на «sendUsername» делает все работает большой :)

нелепая ошибка.

1

Использование IP-адресов почти всегда более сбивает с толку, чем вы думаете.

Существует хорошая вероятность, что у вас неправильная конфигурация OpenFire, так что IP-адрес не является допустимым именем хоста. Перейдите в консоль администратора в разделе «Свойства системы» и убедитесь, что свойство xmpp.domain установлено на ваш IP-адрес.

+0

Joe, xmpp.domain настроен на 123 (после той же самой системы IP, что и в примере), так что это правильно. – Adam