`
waw
  • 浏览: 23574 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

XMPP Server Test

阅读更多

XMPP的Client
可以和tigase server .openfire 等主流XMPP服务器连接,
需要用到smack 包




/**
 * TestXMPPClient
 * @author Charles
 * @email chs.garea@gmail.com
 * 
 * */

package com.gareatech.testxmpp;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.ConnectionConfiguration.SecurityMode;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smack.packet.Registration;

/**
 * @param arg[0] XMPP Server
 * @param arg[1] Thread Number
 * @param arg[2] Debug Mode 1,
 * TestXMPPClient 192.168.10.106 10 1
 * */
public class TestXMPPClient {
    public static void main(String[] arg) throws InterruptedException {
    	boolean Debug = false;
    	String XMPPserver = "192.168.10.106";
    	int number = 0;
    	
    	switch (arg.length)
    	{
    	case 2:
    		XMPPserver  = arg[0];
    		number = Integer.parseInt(arg[1]);
    		break;
    	case 3:
    		XMPPserver  = arg[0];
    		number = Integer.parseInt(arg[1]);
    		if(arg[2].equals("1"))
    			Debug = true;
    		break;
    	default:
    		System.out.println("Wrong Paramenters");
    		return;
    	}
    	
    	System.out.println("server:"+XMPPserver+"\nnumber:"+number+"\nDebug:"+Debug);
    	
    	for( int i = 0; i<number; i++)
        {
        	
    		new MitiSay(i+"",XMPPserver,Debug).start();
    		Thread.sleep(1000);
        }

    }
}

/**
 *  线程
 * 
 * */

class MitiSay extends Thread {
	
	private String XMPPServer;
	
	private boolean DebugFlag ;
	
    public MitiSay(String threadName) {
        super(threadName);
        this.XMPPServer = "192.168.10.106"; 
        this.DebugFlag = false;
    }
 
    public MitiSay(String threadName,String XMPPserver) {
        super(threadName);
        this.XMPPServer = XMPPserver;
        this.DebugFlag = false;
    }
    
    public MitiSay(String threadName,String XMPPserver,boolean DebugFlag) {
        super(threadName);
        this.XMPPServer = XMPPserver;
        this.DebugFlag = DebugFlag;
    }
    public void run() {
        System.out.println("线程"+getName() + " 开始!");
        
        XMPPConnection.DEBUG_ENABLED = DebugFlag;
		ConnectionConfiguration connectionConfig =  new ConnectionConfiguration("192.168.10.106", 5222, "pc-201012031249");

		connectionConfig.setSecurityMode(SecurityMode.required);
		connectionConfig.setSASLAuthenticationEnabled(false);
		connectionConfig.setCompressionEnabled(false);
		//connectionConfig.setSelfSignedCertificateEnabled(true);
		
		try {

			/** Connection **/
			XMPPConnection connection = new XMPPConnection(connectionConfig);
			PacketFilter packetFilter = new AndFilter();
			PacketListener packetListener = new PacketListener() {
			@Override
			public void processPacket(Packet packet) {
				// TODO Auto-generated method stub
				System.out.println("Thread"+getName()+"Get Message:"+packet.toXML());

				if (packet instanceof IQ) {
					IQ response = (IQ) packet;
					if (response.getType() == IQ.Type.ERROR) {
						if (!response.getError().toString().contains("409")) {
								
						}
					} else if (response.getType() == IQ.Type.RESULT) {

					}
				}
			}
			};
			
			connection.addPacketListener(packetListener, packetFilter);
			connection.connect();
			

			System.out.println("connect! Next-> Register!");

			/** Registration **/
			final String newUsername = newRandomUUID();
			final String newPassword = newRandomUUID();

			Registration registration = new Registration();

			registration.setType(IQ.Type.SET);
			registration.setTo(XMPPServer);

			Map paramenter = new HashMap();
			paramenter.put("username", newUsername);
			paramenter.put("password", newPassword);
			paramenter.put("name", "new");
			paramenter.put("email", "mail@mail.com");
			
			registration.setAttributes(paramenter);

			connection.sendPacket(registration);

			System.out.println("registration! Next -> Login");


			/** login **/
			//connection.login("admin", "tigase");
			connection.login(newUsername, newPassword);
			System.out.println("Logged!!"+newUsername+"\n"+newPassword);
			
			while (true)
			{
				Thread.sleep(500000000);
			}
			
       
		} catch (XMPPException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        
        
        System.out.println(getName() + " 线程运行结束!");
    }
    
    /**
     * 
     * newRandomUUID: 获取一随机数
     */  
    private static String newRandomUUID() {
		String uuidRaw = UUID.randomUUID().toString();
		return uuidRaw.replaceAll("-", "");
	}
 }

1
2
分享到:
评论

相关推荐

    django-xmpp-server-test:一个测试XMPP服务器功能的Django项目

    `django-xmpp-server-test` 是一个基于Python的Django框架构建的项目,主要用于测试XMPP(Extensible Messaging and Presence Protocol)服务器的功能。XMPP是一种开放标准的即时通讯协议,它允许用户进行实时、双向...

    在Android使用XMPP详细解说

    message.setBody("Hello, this is a test message!"); connection.sendPacket(message); connection.addPacketListener(new PacketListener() { @Override public void processPacket(Packet packet) { if ...

    node-xmpp-server:使用 node-xmpp 的 XMPP 服务器

    节点-xmpp-服务器惯用 XMPP 服务器库手动的有关如何使用node-xmpp-server说明,请参阅 。安装注意:我们现在只支持 nodejs 0.8.0 及更高版本。 使用包管理器 : npm install node-xmpp-server测试安装开发依赖项,...

    XMPP_tigase_IM服务部署安装

    3. **Tigase Server安装**:Tigase提供了多种安装方式,包括Windows下的EXE安装包、JAR文件以及Linux下的压缩包。用户可以根据自己的操作系统选择合适的安装方式。 - **EXE安装**:适用于Windows环境,安装过程...

    使用Strophe连接xmpp,轻松构建web即时聊天工具

    在本文中,我们将深入探讨如何使用Strophe库与XMPP(Extensible Messaging and Presence Protocol)协议相结合,构建一个Web即时聊天工具。Strophe是一个轻量级的JavaScript库,专门用于处理XMPP协议,使得在Web应用...

    android基于xmpp,asmack的消息推送源码

    message.setBody("Hello, this is a test message!"); connection.sendPacket(message); ``` 对于消息接收,你需要实现`PacketListener`接口,并注册到连接上。当有新的消息到达时,`processPacket`方法会被调用。 ...

    jitsi-test

    4. **Jitsi Xmpp Server**:Jitsi服务通常与XMPP服务器(如Prosody)集成,用于处理用户的认证和房间管理。 5. **WebRTC**:Jitsi是建立在WebRTC技术上的,这是一种让浏览器之间可以直接进行音视频通信的技术,无需...

    ejabberd 群聊 strophe.js 实现

    var conn = new Strophe.Connection("xmpp://yourserver.com:5280/xmpp"); conn.connect(username, password, onConnect); ``` 2. **连接事件处理**:定义`onConnect`函数来处理连接成功、失败或断开的事件,如...

    基于smack连接openfire服务器的例子-JAVA

    message.setBody("Hello, this is a test message!"); connection.sendPacket(message); ``` 5. **处理事件**:为了监听收到的消息,可以注册一个`PacketListener`。这允许你实现实时的交互,如聊天室的加入、离线...

    ember-chat:带有XMPP的Ember MVC聊天应用程序

    ember test --server 建造 ember build (发展) ember build --environment production (生产) 部署中 指定部署您的应用所需的时间。 进一步阅读/有用的链接 ember.js 余烬 开发浏览器扩展 Chrome的余烬检查

    Android使用smack连接ejabberd服务器注册、收发消息

    message.setBody("Hello, this is a test message!"); ChatManager chatManager = ChatManager.getInstanceFor(connection); Chat chat = chatManager.chatWith("recipient@your.ejabberd.server.com"); chat....

    jslix:JSLiX是基于XML ORM方法JavaScript XMPP库

    启动服务器: buster server 默认情况下,测试服务器在 打开您要在其中运行测试的浏览器,然后单击捕获按钮。 运行测试: buster test 要构建文档,您需要拥有yuidoc。 您可以使用yuidoc命令在存储库的根目录中...

    openfire相关代码

    message.setBody("Hello, this is a test message!"); connection.sendStanza(message); ``` 5. **处理事件**:为了接收消息或处理其他事件,可以注册监听器。例如,`PacketListener`可以用来监听接收到的消息。...

    Android-Openfire-Smack4.1.2 (Android Studio)

    .setHost("your.openfire.server") .setPort(5222) .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) // 根据服务器配置调整 .setUsernameAndPassword("username", "password") .build(); ...

    iot_push:基于netty + mqtt3.1.1 + springboot + jdk8实现的mqtt服务端跟客户端

    iot_push基于netty + mqtt 3.1.1协议开发的物联网消息推送框架(此项目不维护了)请参考新项目( )项目目录...##服务端示例(iot_push_server_starter_test)已实现:发布订阅功能遗言通知会话session数据发布保留消息

    activemq+js

    ActiveMQ是Apache软件基金会开发的一个开源项目,它遵循开放消息中间件(Open Message Middleware,OMM)标准,支持多种协议,如OpenWire、AMQP、STOMP、XMPP、MQTT等。ActiveMQ的核心功能包括消息队列、发布/订阅...

    SmackTest:使用 Smack v4.1 Alpha 库进行测试

    .setHost("your.xmpp.server") .setPort(5222) .setUsernameAndPassword("username", "password") .build(); XMPPTCPConnection connection = new XMPPTCPConnection(config); connection.connect(); ``` **4. ...

    Openfire 的安装和配置、插件开发

    Openfire 是一个基于 XMPP 协议的即时通信服务器,可以实现实时的聊天服务。在本文中,我们将详细介绍 Openfire 的安装和配置过程,并探讨如何使用 Eclipse 进行插件开发。 一、Openfire 的安装和配置 Openfire 的...

    Smack 4.1 + Android + Openfire 聊天项目搭建

    Smack是一个强大的开源Java库,专门用于处理XMPP(Extensible Messaging and Presence Protocol)协议,而Openfire是基于XMPP的服务器,用于实现实时通信。Android作为全球最流行的移动操作系统,提供了丰富的开发...

    Centos Openfire环境部署

    - **Openfire**:是一款开源的即时通讯服务器软件,基于XMPP协议,支持文本消息、语音视频聊天、文件传输等功能。 - **适用场景**:企业内部沟通、在线客服系统、社交应用等。 #### 二、环境搭建所需组件 根据提供...

Global site tag (gtag.js) - Google Analytics