【发布时间】:2019-09-06 19:36:52
【问题描述】:
我正在学习 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 和其他人没有帮助。
【问题讨论】: