OICQ uses UDP, not TCP
1. Send the status to the Server, and Server sends it to your friends.
2. javax.swing.JEditorPane can read rtf/html/plain text
3. IPs of your friends are loaded when your OICQ is started and they are online.
If they are not online, your message are sent to the Server. When they become online, the Server will notify you and give you their new IPs, which will remain unchanged until they are out.
4. IMHO, not necessarily needed.
5. IMHO, no. What you need is to connect to the Server, not directly to each of your friends.
All I replied was based on that you run the program on at least one server. If you wanna run it on terminator to terminator, it will be quite different.