| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package net;
- import config.Config;
- import crypto.KeyManager;
- import model.AuthMessage;
- import model.Message;
- import java.io.*;
- import java.net.*;
- import java.security.PublicKey;
- public class RelayClient {
- private Socket socket;
- private ObjectOutputStream out;
- private ObjectInputStream in;
- public RelayClient(String serverIp, PublicKey myPublicKey, MessageReceiver messageReceiver) throws IOException {
- socket = new Socket(serverIp, 12345);
- out = new ObjectOutputStream(socket.getOutputStream());
- in = new ObjectInputStream(socket.getInputStream());
- AuthMessage auth = new AuthMessage(Config.APPEARANCE_NAME, myPublicKey);
- System.out.println("Sending auth: " + auth);
- send(auth);
- new Thread(() -> {
- try {
- Object msg;
- while ((msg = in.readObject()) != null) {
- if(msg instanceof Message){
- ((Message) msg).decrypt(KeyManager.getPrivateKey(), KeyManager.getPublicKey());
- messageReceiver.onMessage((Message) msg);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }).start();
- }
- public void send(Object msg) {
- try {
- out.writeObject(msg);
- out.flush();
- System.out.println("Sent: " + msg);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public interface MessageReceiver {
- void onMessage(Message msg);
- }
- }
|