노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.


 

XMPP Server용 XMPP Client 만들기


 

Openfire의 하위 프로젝트인 Smack ( Client Library) 를 사용하여, 간단한 프로그램을

빌드 할 수 있다.




 

예를들어 Openfire서버가 설치된 장비의 Stress Test용도의 클라이언트가 필요하다면

이럴때 사용하면 좋을 것도 같다.

 

 

Openfire Projects  ( ignite realtime ) : http://www.igniterealtime.org/projects/index.jsp

 

 

Smack 라이브러리를 다운로드 해서 프로젝트에 추가하는 방안도 있지만,

프로젝트 자체를 Maven Project를 생성을 하고 나서, pom.xml에 아래 내용을

채워 주면 자동으로 Library들이 포함되는 방법이 더 좋을 듯 하다.

 

 

	
		
		   org.igniterealtime.smack
		      smack-java7
		      4.1.6
		 
		
		        org.igniterealtime.smack
		        smack-tcp
		        4.1.6
		
		
		        org.igniterealtime.smack
		        smack-im
		        4.1.6
		
		
		        org.igniterealtime.smack
		        smack-extensions
		        4.1.6
		
	  

 

 

package smackMavenClient;

import java.io.IOException;
import java.util.Collection;

import org.jivesoftware.smack.AbstractXMPPConnection;
import org.jivesoftware.smack.SmackException;
import org.jivesoftware.smack.SmackException.NotConnectedException;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.chat.Chat;
import org.jivesoftware.smack.chat.ChatManager;
import org.jivesoftware.smack.chat.ChatMessageListener;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.roster.Roster;
import org.jivesoftware.smack.roster.RosterEntry;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;

public class smClient implements ChatMessageListener  {

	private AbstractXMPPConnection conn2 ;
	
	private static smClient c ;
	
	public void login(String userName, String password ) throws SmackException, IOException, XMPPException {
		
		XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
				  .setUsernameAndPassword(userName, password)
				  .setServiceName("localhost")
				  .setHost("localhost")
				  .setPort(5222)
				  .build();
		
		conn2 = new XMPPTCPConnection(config);
		conn2.connect();
	}
	
	public static void main(String[] args) throws SmackException, IOException, XMPPException {

		c = new smClient();

		c.login("아이디", "비번");
		c.sendMessage("보내고 싶은 메시지", "친구아이디");
		c.getFriends();
		
	}
	
	public void sendMessage(String message, String to) throws NotConnectedException {
	
		ChatManager cm = ChatManager.getInstanceFor(conn2);
		
		Chat newChat = cm.createChat(to);
		newChat.addMessageListener( this);
		newChat.sendMessage(message);
		
	}


	public void getFriends() {
		
		Roster r = Roster.getInstanceFor(conn2);
		
		Collection entries = r.getEntries();
		
		for ( RosterEntry entry : entries ) {
			System.out.println( entry.toString() );
		}
		
		c.disconnect();

	}
	
	
	
	public void disconnect()
	{
		conn2.disconnect();
	}
	


	public void processMessage(Chat chat, Message message) {
		
		if ( message.getType().equals("chat")) {
			System.out.println("Received message: " + message.getBody() );
		}

	}


}

 

 

샘플 예제가 있는 웹페이지

 

 

https://namalfernando.wordpress.com/2015/12/18/write-xmpp-client-using-smack-api/ 

 

 

 

* XMPP client로 공개된 소스들에 대한 비교표

 

https://en.wikipedia.org/wiki/Comparison_of_XMPP_clients

 

 

designation Operating system File transfer (XEP-0096) Jingle MUC GPG
ChatSecure Android / Apple iOS Yes per Plugin Yes No
Conversations Android Yes Yes Yes Yes
CoyIM Mac OS X, Linux,Windows
Coccinella Cross-platform Yes Yes Yes No
Gajim BSD/Linux/Windows Yes Yes Yes Yes[Note 1]
Jeti/2 Cross-platform(Java) Yes Voice Beta Yes Yes
Jitsi Cross-platform(Java) Yes Yes Yes No
MCabber Linux, Mac OS X,BSD No No Yes Yes
Pidgin Mac OS X, Linux,Windows Yes Yes Yes per Plugin
Psi eCS/Linux/Mac OS X/Solaris/Windows Yes Yes Yes Yes
Tkabber Cross-platform Yes No Yes Yes

  1. Jump up^ since Version 0.15 on Windows

 

 

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,