72 lines
1.8 KiB
Java
72 lines
1.8 KiB
Java
package netwerkprog.game.client;
|
|
|
|
import java.io.DataInputStream;
|
|
import java.io.DataOutputStream;
|
|
import java.io.IOException;
|
|
import java.net.Socket;
|
|
import java.util.Scanner;
|
|
|
|
public class Client extends Thread{
|
|
private int port;
|
|
private String hostname;
|
|
private boolean isConnected = true;
|
|
|
|
@Override
|
|
public void run() {
|
|
this.connect();
|
|
}
|
|
|
|
public Client(String hostname, int port) {
|
|
this.port = port;
|
|
this.hostname = hostname;
|
|
}
|
|
|
|
public void connect() {
|
|
System.out.println("[CLIENT] connecting to server on port " + port);
|
|
Scanner scanner = new Scanner(System.in);
|
|
try {
|
|
Socket socket = new Socket(hostname,port);
|
|
DataInputStream in = new DataInputStream(socket.getInputStream());
|
|
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
|
|
|
|
Thread readSocketThread = new Thread( () -> {
|
|
receiveDataFromSocket(in);
|
|
});
|
|
|
|
readSocketThread.start();
|
|
|
|
String input = "";
|
|
|
|
while (!input.equals("\\quit")) {
|
|
input = scanner.nextLine();
|
|
out.writeUTF(input);
|
|
}
|
|
|
|
isConnected = false;
|
|
|
|
socket.close();
|
|
|
|
try {
|
|
readSocketThread.join();
|
|
} catch (InterruptedException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private void receiveDataFromSocket(DataInputStream in) {
|
|
String received = "";
|
|
while (isConnected) {
|
|
try {
|
|
received = in.readUTF();
|
|
System.out.println(received);
|
|
} catch (IOException e) {
|
|
System.out.println("exception caught - " + e.getMessage());;
|
|
}
|
|
}
|
|
}
|
|
}
|