2010-12-27 17 views
3

Ok, das Problem sollte trivial sein, aber ich kann nicht auf den Grund davon kommen.Senden XMPP (Smack) Nachricht

Ich habe zwei Benutzer A & B

Ihre JID ist für dieses Beispiel wird A @ 123 und B @ 123 sein, wo 123 die IP-Adresse des Servers ist.

Ich bin B mit dem folgenden Code eine Nachricht von A-> Senden:

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); 

ich die IP fest einprogrammiert haben, so dass ich 100% sicher bin, dass ich die „@ 123“ anschließen an Das Ende des Nickname, also gibt es keine falschen JIDs.

So sendet A @ 123 msgObj zu B @ 123. So habe ich verstanden, dass XMPP-Messaging funktioniert. Das kann nicht von A-> B gesendet werden, aber es muss A @ 123 -> B @ 123 sein.

Allerdings scheint mein Server anders zu denken. Er informiert mich kontinuierlich von dem folgenden Fehler:

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 

sowohl in der A- und B-Roster auf dem Server Openfire, sie haben sich gegenseitig als Kontakt mit den richtigen JIDs (username @ 123).

Kann jemand Einblick geben? Ich bin verloren.

bearbeiten

Ich versuchen Wireshark zu verwenden, um die XML zu und von dem Openfire Server, wenn der Empfänger der Nachricht korrekt benannt wird, um zu bestimmen geschickt zu fangen (A @ 123 statt A).

Bei Wireshark, erhielt ich dies als der XML übertragen werden:

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

ich deaktiviert SSL habe, habe ich un-sicher angeschlossen ist. Ich bin nicht sicher, warum ich XML vom SSL-Typ bekomme, ist das was es ist?

+0

Dies kann nur dadurch verursacht werden, dass Sie etwas an A anstatt an A @ 123 senden. Überprüfen Sie den XML-Code, den Sie tatsächlich an den Server senden (mit Wireshark, wenn Smack/Openfire keine Stream-Überprüfung bereitstellt). – MattJ

+0

Klingt gut Matt.Ich habe noch nicht an Wireshark gedacht. Ich konnte nicht verstehen, wie Smack nach A senden würde, wenn ich das @IP fest programmiert hätte. Ich werde Sie die Ergebnisse wissen lassen. – Adam

+0

Wireshark liefert keine relevanten Informationen. Ich glaube, das liegt daran, dass ich an Port 5222 anschließe. Das XML gibt mir eine Reihe von Zahlen anstelle von tatsächlichem XML. Ich bin mir nicht sicher, wie ich daran vorbeikommen soll. – Adam

Antwort

2

Es stellte sich heraus, die Antwort auf dieses Problem wurde etwas übersehen.

In der ersten Zeile des Codes:

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

ich nicht die Variable "username" machen musste die richtige Erweiterung IP. So war es nur „A“ statt „A @ 123“

Moving „sendUsername“ nach oben und ändern „username“ auf „sendUsername“ macht große alles funktionieren :)

Dumme Fehler.

1

Die Verwendung von IP-Adressen ist fast immer verwirrender als Sie denken.

Es besteht eine gute Chance, dass OpenFire falsch konfiguriert ist, so dass die IP-Adresse kein gültiger Hostname ist. Gehen Sie in die Admin-Konsole unter "Systemeigenschaften" und stellen Sie sicher, dass die Eigenschaft xmpp.domain auf Ihre IP-Adresse eingestellt ist.

+0

Joe, Die xmpp.domain ist auf 123 eingestellt (nach dem gleichen IP-System, das ich im Beispiel verwendet habe), also ist es korrekt. – Adam

Verwandte Themen