我最近在做毕设,遇到一个问题,关于使用C#语言开发小型即时通讯(类似聊天室)的小工具,使用XMPP协议

希望高手能给我提供一些源代码参考,关于这方面的,谢谢了!!!!!我的邮箱是:[email protected],谢谢大家了!!!

第1个回答  2011-04-06
举个例子看看所谓的XML流是什么样子的? 客户端:<?xml version='1.0'?> <stream:stream to='example_com' xmlns='jabber:client' xmlns:stream='http_etherx_jabber_org/streams' version='1.0'> 服务器:<?xml version='1.0'?> <stream:stream from='example_com' id='someid' xmlns='jabber:client' xmlns:stream='http_etherx_jabber_org/streams' version='1.0'> ...其他通信... 客户端:<message from='juliet_example_com' to='romeo_example_net' xml:lang='en'> 客户端: <body>Art thou not Romeo, and a Montague?</body> 客户端:</message> 服务器:<message from='romeo_example_net' to='juliet_example_com' xml:lang='en'> 服务器:<body>Neither, fair saint, if either thee dislike.</body> 服务器:</message> 客户端:</stream:stream> 服务器:</stream:stream> 以文档的观点来看,客户端或服务器发送的所有XML文本连缀在一起,从<stream>到</stream>构成了一个完整的XML文档。其中的stream标签就是所谓的XML Stream。在<stream>与</stream>中间的那些<message>...</message>这样的XML元素就是所谓的XML Stanza(XML节)。XMPP核心协议通信的基本模式就是先建立一个stream,然后协商一堆安全之类的东西,中间通信过程就是客户端发送XML Stanza,一个接一个的。服务器根据客户端发送的信息以及程序的逻辑,发送XML Stanza给客户端。但是这个过程并不是一问一答的,任何时候都有可能从一个方发信给另外一方。通信的最后阶段是</stream>关闭流,关闭TCP/IP连接。
第2个回答  2011-04-12
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace UdpServer
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Char
{
private static IPAddress remoteIPAddress;
private static int remotePort;
private static int localPort;
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
try
{
//Get necessary data for connection
Console.WriteLine("Enter Local port");
localPort = Convert.ToInt16(Console.ReadLine());

Console.WriteLine("Enter remote port");
remotePort = Convert.ToInt16(Console.ReadLine());

Console.WriteLine("Enter remote IP Address");
remoteIPAddress = IPAddress.Parse(Console.ReadLine());

//Create thread for listening
Thread tRec = new Thread(new ThreadStart(Receiver));
tRec.Start();

while(true)
{
Send(Console.ReadLine());
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}

private static void Send(string datagram)
{
//Create UdpClient
UdpClient sender = new UdpClient();

//Create IPEndPoint with detail of remote host
IPEndPoint endPoint = new IPEndPoint(remoteIPAddress,remotePort);

try
{
byte[] bytes = Encoding.ASCII.GetBytes(datagram);
sender.Send(bytes,bytes.Length,endPoint);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
sender.Close();
}
}

private static void Receiver()
{
//Create a UdpClient for reading incoming data.
UdpClient receivingUdpClient = new UdpClient(localPort);

//IPEndPoint with remote host information
IPEndPoint RemoteIPEndPoint = null;

try
{
Console.WriteLine("---------------*********Ready for char!!!!*******------------");
while(true)
{
//wait for datagram
byte[] receiveBytes = receivingUdpClient.Receive(ref RemoteIPEndPoint);

//Convert and display data
string returndata = Encoding.ASCII.GetString(receiveBytes);
Console.WriteLine("-"+returndata.ToString());
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}本回答被提问者和网友采纳
第3个回答  2011-04-11
这个,这个,,,,,,这个
C# 的没有
其他的语言倒是有

其实jabber服务器与客户端交互是以XML纯文本的格式传输的,很容易理解的。
先socket,然后以 xml流开始与服务器交互,后面的主要就是操作xml节了。