【问题标题】:smack xmpp library Javasmack xmpp 库 Java
【发布时间】:2015-01-20 15:59:37
【问题描述】:

我使用库 smack 创建了一个 java 项目。我也在我的电脑上创建了一个服务器 xmpp openfire。 我的服务器地址是:192.168.1.4 端口是:5222

我的问题是发送/接收消息。那就是当我尝试向另一个用户发送消息时,该用户没有收到它。现在放置我的java程序:

 ConnectionConfiguration config;
    XMPPConnection con;

    config = new ConnectionConfiguration("192.168.1.4", 5222);
    con = new XMPPTCPConnection(config);

    con.connect();

    /*This code is inside the button event log-in*/
    con.login(txtUsername.getText(), txtPassword.getText());


    /*this code is internal event of sending message to another user*/
    ChatManager chatmanager = ChatManager.getInstanceFor(con);
    final Chat newChat = chatmanager.createChat(txtDestUsers.getText(), new MessageListener() {

                        @Override
                           public void processMessage(Chat chat, Message message) {
                              txtRicevuti.setText(message.getBody());
                           }
                        });

                        try {
                           newChat.sendMessage(txtMessage.getText());
                        }
                        catch (XMPPException | NotConnectedException e) {
                           System.out.println("Error Delivering block");
                        }

txtDestUsers =  contains the name of the recipient type B@192.168.1.4
txtMessage = message to be sent
txtUsername = myUsername (A@192.168.1.4)
txtPassword = myPassword
txtRicevuti = received messages

作为测试,我运行了两次程序,并使用两个帐户登录:A@192.168.1.4 和 B@192.168.1.4

如果我尝试向自己发送消息,消息就会到达。 好像 txtDestUsers 插入了另一个用户的名字,消息没有到达。

怎么样?

【问题讨论】:

    标签: java xmpp chat openfire smack


    【解决方案1】:
    Message message=new Message();
    message.setTo(<JabberId>);
    message.setType(Message.Type.chat);
    message.setBody("Hello World!");
    
    con.sendPacket(message);
    

    这就是你发送消息的方式

    PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
    con.addPacketListener(new PacketListener() {
     public void processPacket(Packet packet) {
     Message message = (Message) packet;
     String body = message.getBody();
     String from = message.getFrom();
     }   
     }, filter);
    

    sn-p 上面是你接收消息的方式。

    如需进一步参考,请参阅: http://developer.samsung.com/technical-doc/view.do?v=T000000119

    【讨论】:

      猜你喜欢
      • 2016-05-09
      • 2015-07-26
      • 2014-10-12
      • 1970-01-01
      • 2018-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多