package client;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.ConnectionConfiguration.SecurityMode;
import org.jivesoftware.smack.PacketCollector;
import org.jivesoftware.smack.SmackConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketIDFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.packet.Registration;
import org.jivesoftware.smack.provider.ProviderManager;
/**
*
* @author xu duzhou
*
*/
public class Clienttest extends Thread{
public String name;
public void setNames(String name) {
this.name = name;
}
public int index;
public void setIndex(int index) {
this.index = index;
}
@Override
public void run() {
// TODO Auto-generated method stub
Clienttest client = new Clienttest();
XMPPConnection connection= client.conServer();
String result=client.regist(connection,"sssssd"+index, "123");
System.out.println("第 "+ index +"个 regist result is----> "+result);
client.login(index,connection,"sssssd"+index, "123");
new CThread(connection).start();
System.out.println("----");
}
public XMPPConnection conServer() {
ConnectionConfiguration config = new ConnectionConfiguration(
"192.168.0.4", 5222);//修改为需要连接的ip地址
config.setSecurityMode(SecurityMode.required);
config.setSASLAuthenticationEnabled(false);
config.setCompressionEnabled(false);
/** 创建connection链接 */
try {
XMPPConnection connection = new XMPPConnection(config);
connection.connect();
ProviderManager.getInstance().addIQProvider("notification",
"androidpn:iq:notification",
new NotificationIQProvider());
return connection;
} catch (XMPPException e) {
e.printStackTrace();
}
return null;
}
private String newRandomUUID() {
String uuidRaw = UUID.randomUUID().toString();
return uuidRaw.replaceAll("-", "");
}
public String regist(XMPPConnection connection,String username, String password) {
if (connection == null)
return "0";
Registration reg = new Registration();
reg.setType(IQ.Type.SET);
reg.setTo(connection.getServiceName());
Map<String, String> user = new HashMap<String, String>();
user.put("username", username);
user.put("password", password);
user.put("email", "865227514@qq.com");
user.put("name", "larena");
reg.setAttributes(user);
PacketFilter filter = new AndFilter(new PacketIDFilter(
reg.getPacketID()), new PacketTypeFilter(IQ.class));
PacketCollector collector = connection.createPacketCollector(filter);
connection.sendPacket(reg);
IQ result = (IQ) collector.nextResult(SmackConfiguration
.getPacketReplyTimeout());
// Stop queuing results
//collector.cancel();// 停止请求results(是否成功的结果)
if (result == null) {
System.out.println("No response from server.");
return "0";
} else if (result.getType() == IQ.Type.RESULT) {
return "1";
} else { // if (result.getType() == IQ.Type.ERROR)
if (result.getError().toString().equalsIgnoreCase("conflict(409)")) {
System.out.println("IQ.Type.ERROR: "
+ result.getError().toString());
return "2";
} else {
System.out.println("IQ.Type.ERROR: "
+ result.getError().toString());
return "3";
}
}
}
public boolean login(int i,XMPPConnection connection,String username, String password) {
System.out.println("try to login...");
try {
if (connection != null)
{
connection.login(username, password,"AndroidpnClient");
PacketFilter packetFilter = new PacketTypeFilter(
NotificationIQ.class);
connection.addPacketListener(new NotificationPacketListener(i), packetFilter);
System.out.println("Login successfully!");
return true;
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Login failed!");
}
return false;
}
// public static void main(String[] args) {
//
// for(int i=0;i<500;i++){
// Clienttest client = new Clienttest();
// XMPPConnection connection= client.conServer();
// String result=client.regist(connection,"sssss"+i, "123");
// System.out.println("第 "+ i+"个 regist result is----> "+result);
// client.login(i,connection,"sssss"+i, "123");
//
// new CThread(connection).start();
// System.out.println("----");
// }
//
//
// }
static class CThread extends Thread{
XMPPConnection connection;
public CThread(XMPPConnection connection) {
super();
this.connection = connection;
}
@Override
public void run() {
Presence p=new Presence(Presence.Type.available);
while(true){
connection.sendPacket(p);
try {
sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}