1

Windows 7 で c#.net を使用して XMPP を学習したいので、agsXMPP ライブラリと jspon をダウンロードし、テスト用に次のコードを記述しましたが、情報を送信できません。

using System;
using System.Collections.Generic;

using System.Linq;
using System.Text;
using agsXMPP;
using agsXMPP.protocol.client;
using agsXMPP.Collections;
using agsXMPP.protocol.iq.roster;
using System.Threading;

namespace ConsoleApplication1

{
    class Program
    {
    static void xmpp_OnLogin(object sender)
    {
        Console.WriteLine("Logged In");
    }

    static void Main(string[] args)
    {
        Console.WriteLine("Login");
        Console.WriteLine();
        Console.WriteLine("JID: ");
        string JID_Sender = Console.ReadLine();
        Console.WriteLine("Password: ");
        string Password = Console.ReadLine();

        Jid jidSender = new Jid(JID_Sender);
        XmppClientConnection xmpp = new XmppClientConnection(jidSender.Server);

        xmpp.Open(jidSender.User, Password);
        xmpp.OnLogin += new ObjectHandler(xmpp_OnLogin);


        Presence p = new Presence(ShowType.chat, "Online");
        p.Type = PresenceType.available;
        xmpp.Send(p);

    }


}

}

ID を入力します (テスト用に作成したばかりです) usernme : belkacemsend@jabber.org

出力は次のとおりです。

Exception:Thrown: "Object reference not set to an instance of an object." (System.NullReferenceException)
A System.NullReferenceException was thrown: "Object reference not set to an instance of an object."


Exception:Caught: "Object reference not set to an instance of an object." (System.NullReferenceException)
A System.NullReferenceException was caught: "Object reference not set to an instance of an object."


Exception:Thrown: "A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied" (System.Net.Sockets.SocketException)
A System.Net.Sockets.SocketException was thrown: "A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied"


Exception:Caught: "A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied" (System.Net.Sockets.SocketException)
A System.Net.Sockets.SocketException was caught: "A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied"
4

1 に答える 1

1

あなたの問題は、OnLoginが発生するのを待つ必要があることです

xmpp.Open(jidSender.User, Password);
xmpp.OnLogin += new ObjectHandler(xmpp_OnLogin);

// Wait here

Presence p = new Presence(ShowType.chat, "Online");
p.Type = PresenceType.available;
xmpp.Send(p);

codeproject.com のこの記事には、agsXMPP ライブラリを使用して Jabber クライアントを作成するためのソリューションがあり、最適ではありませんが、開始には適しています。

bool isLoggedIn = false;
xmpp.OnLogin += (sender) => { isLoggedIn = true; };
xmpp.Open(jidSender.User, Password);

while (isLoggedIn == false) 
{ 
    System.Threading.Thread.Sleep(100); 
}

Presence p = new Presence(ShowType.chat, "Online");
p.Type = PresenceType.available;
xmpp.Send(p);
于 2013-04-06T18:47:59.567 に答える