繁体   English   中英

使用套接字和XMPP发送消息

[英]Send message using sockets and XMPP

我正在学习Java套接字,并希望仅使用套接字来尝试实现XMPP库,但我无法理解如何做到这一点。 我读了RFC,但什么都不懂。

我想实现这些功能:

  • 发送/接收消息
  • 用户状态
  • 所有联系人

据我所知,这意味着我可以成功地向服务器发送消息,但如何?

public static void main(String[] args) {
        String connect = "<?xml version='1.0'?> "
                + "<stream:stream "
                + "to='jabber.ru' version='1.0' "
                + "xmlns='jabber:client' "
                + "xmlns:stream='http://etherx.jabber.org/streams'>";

        String msg = "<starttls xmlns=\"urn:ietf:params:xml:ns:xmpp-tls\">";

        try {
            InetAddress address = InetAddress.getByName(host);
            Socket socket = new Socket(address, port);
            socket.setKeepAlive(true);

            OutputStream os = socket.getOutputStream();
            OutputStreamWriter osw = new OutputStreamWriter(os);
            BufferedWriter bw = new BufferedWriter(osw);
            bw.write(connect);
            bw.flush();
            System.out.println("Message sent to the server : " + connect);

            InputStream is = socket.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String message = br.readLine();
            System.out.println("Message received from the server : " + message);

            bw.write(msg);
            bw.flush();
            System.out.println("Message sent to the server : " + msg);

            is = socket.getInputStream();
            isr = new InputStreamReader(is);
            br = new BufferedReader(isr);
            message = br.readLine();
            System.out.println("Message received from the server : " + message);

        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

注意:我不想使用任何库! 所以Smack和其他人都没有帮助。

收到切换到TLS的确认后,您需要将套接字切换到TLS,不再使用明文。 完成后,您只需打开流并启动协商序列即可。 服务器将发送您的流功能,您将能够进行身份验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM