我使用的是Visual Studio 2010,操作系統是Windows 7,64位。我正在進行的項目需要XMPP功能;爲此,我正在使用agsXMPP庫。項目類型是一個WPF客戶端,它在我的xmpp代碼正在運行時引發一個停留在那裏的窗口。無法將agsXmpp客戶端連接到eJabberd服務器
我在同一個Windows系統上運行eJabberd 2.1.3服務器,我在其中進行開發。我還在eJabberd服務器上創建了多個帳戶(例如「aaa @ mydomain」,「bbb @ mydomain」等等)並將它們「融洽」在一起。
爲了測試與客戶端的連接性,我在Windows上使用Pandion Jabber客戶端,在同一網絡上使用Android上的Xabber客戶端。設置工作正常,Xabber和Pandion客戶端可以相互交換消息。爲了確保沒有干擾,我暫時禁用了防火牆。
問題:我無法將我的程序連接到eJabberd服務器。當窗口被拋出時,在其他客戶端上不顯示該狀態。我使用下面的代碼:
string uname = "aaa", domain_server = "mydomain", resource = "res1", password = "password";
Jid jid = new Jid (uname, domain_server, resource);
XmppClientConnection _xmppConn = new XmppClientConnection (jid.Server);
// This is my development machine's IP address
_xmppConn.ConnectServer = "192.168.0.101";
_xmppConn.Server = domain_server;
_xmppConn.Open (jid.User, password);
// The event handlers:
_xmppConn.OnLogin += new ObjectHandler (_xmppConn_OnLogin);
_xmppConn.OnMessage += new agsXMPP.protocol.client.MessageHandler (_xmppConn_OnMessage);
void _xmppConn_OnMessage (object sender, agsXMPP.protocol.client.Message msg) {
MessageBox.Show (msg.Body);
}
void _xmppConn_OnLogin (object sender) {
MessageBox.Show ("Logged in");
}
相同的代碼在Facebook上聊工作正常,當我的消息從另一個FB帳戶的帳戶。
string uname = "<my fb name>", domain_server = "facebook.com", resource = "res1", password = "<my password>";
Jid jid = new Jid (uname, domain_server, resource);
XmppClientConnection _xmppConn = new XmppClientConnection (jid.Server);
_xmppConn.Server = "chat.facebook.com";
_xmppConn.Open (jid.User, password);
// The event handlers:
_xmppConn.OnLogin += new ObjectHandler (_xmppConn_OnLogin);
_xmppConn.OnMessage += new agsXMPP.protocol.client.MessageHandler (_xmppConn_OnMessage);
void _xmppConn_OnMessage (object sender, agsXMPP.protocol.client.Message msg) {
MessageBox.Show (msg.Body);
}
void _xmppConn_OnLogin (object sender) {
MessageBox.Show ("Logged in");
}
我一直在絞盡腦汁,但只是無法弄清楚我可能會出錯的地方。有人可以幫忙嗎?先謝謝你。 :)
我不知道很多關於agsxmpp,但也許你需要登錄後手動發送的存在? – legoscia 2014-08-27 14:51:48
@legoscia,我嘗試添加這一行:_xmppConn.AutoPresence = TRUE;在代碼中。不要去那裏。 – Najeeb 2014-08-27 14:55:05
'telnet 192.168.0.101 5222'是否工作? – vitalyster 2014-08-27 18:14:37