1. 程式人生 > >smack傳送和接收資訊

smack傳送和接收資訊

	/**
     *傳送訊息   
     *@param con 使用者連線物件
     *@param user 使用者JID
     *@param msg 傳送內容
     */
	@Override
	public synchronized void sendMessages(XMPPConnection con,String user, String msg) {
		if (null != user && !"@".equals(user))
		{
			user = user + "@" +con.getServiceName(); 
		}
		Chat chat=con.getChatManager().createChat(user, null);
		try {
			chat.sendMessage(msg);
		} catch (XMPPException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 接收訊息 
	 * @param con 使用者連線物件 
	 */
	@Override
	public void recieveMessage(final XMPPConnection con) {
		final Map<String, String> params = new HashMap<String, String>();;
		//final StringBuilder sb=new StringBuilder();
		con.getChatManager().addChatListener(new ChatManagerListener() {
			
			@Override
			public void chatCreated(Chat chat, boolean arg1) {
				chat.addMessageListener(new MessageListener() {
					
					@Override
					public void processMessage(Chat arg0, Message message) {
						System.out.println(message.getFrom()+"-->"+message.getTo()+"\n"+message.getBody());
					}
				});
				
			}
		});
		//return sb.toString();
	}

private static void addListener(XMPPConnection con) {
        // 包的過濾器
        PacketFilter filterMessage = new PacketTypeFilter(Message.class);
        // 建立包的監聽器
        PacketListener myListener = new PacketListener() {
            public void processPacket(Packet packet) {
                // 以XML格式輸出接收到的訊息
                System.out.println("Body: " + ((Message) packet).getBody());
            }
        };
        // 給連線註冊一個包的監聽器
        con.addPacketListener(myListener, filterMessage);
    }