Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package pl.polsl.java.kamil.zietek.lab4.network;
- import java.io.*;
- import java.net.*;
- import javax.swing.JTextField;
- import javax.swing.JTextPane;
- import javax.swing.table.DefaultTableModel;
- /**
- * Class with communication protocol for client
- *
- * @author Kamil Zietek
- * @version 4.0
- */
- public class TCPClient {
- /**
- * Socket, that will be connected to server
- */
- private final Socket clientSocket; //wszystko okej przepisane
- /**
- * buffered input character stream
- */
- private final BufferedReader inFromServer;
- /**
- * Formatted output character stream
- */
- private final PrintWriter outToServer;
- /**
- * Creates the client socket
- *
- * @param address server address
- * @param port server port
- * @throws IOException when port is already bind
- */
- public TCPClient(String address, int port) throws IOException {
- clientSocket = new Socket(address, port);
- outToServer = new PrintWriter(
- new BufferedWriter(
- new OutputStreamWriter(
- clientSocket.getOutputStream())), true);
- inFromServer = new BufferedReader(
- new InputStreamReader(
- clientSocket.getInputStream()));
- }
- /**
- * Sends command to server
- *
- * @param command command from user
- * @return true if success, false if something failed
- */
- public boolean executeCommand(String command) {
- command = command.toUpperCase();
- outToServer.println(command);
- try {
- return (inFromServer.readLine().equals("OK"));
- } catch (IOException e) {
- System.err.println(e.getMessage());
- }
- return false;
- }
- /**
- * Method that creates new players from table
- *
- * @param model jTableModel with players
- * @return true if created, false if error
- */
- public boolean createPlayers(DefaultTableModel model) {
- if (executeCommand("REGISTER")) {
- outToServer.println(model.getRowCount());
- try {
- boolean finish = false;
- int i = 0;
- while (!finish) {
- String str = inFromServer.readLine();
- switch (str) {
- case "OK_GIVE_NAME":
- outToServer.println(model.getValueAt(i, 1));
- break;
- case "OK_GIVE_SURNAME":
- outToServer.println(model.getValueAt(i, 2));
- break;
- case "OK_GIVE_AGE":
- outToServer.println(model.getValueAt(i, 3));
- break;
- case "OK_ADDED":
- i++;
- break;
- case "REGISTER_SUCCESS":
- finish = true;
- break;
- default:
- return false;
- }
- }
- } catch (IOException e) {
- System.err.println(e.getMessage());
- }
- return true;
- } else {
- return false;
- }
- }
- /**
- * Refresh table with players
- *
- * @param table table to be refreshed
- */
- public void refreshPlayersTable(DefaultTableModel table) {
- if (executeCommand("GET_PLAYERS")) {
- int numberOfPlayers;
- try {
- numberOfPlayers = Integer.parseInt(inFromServer.readLine());
- for (int i = 0; i < numberOfPlayers; i++) {
- outToServer.println("OK_GIVE_NAME");
- String name = inFromServer.readLine();
- outToServer.println("OK_GIVE_SURNAME");
- String surname = inFromServer.readLine();
- outToServer.println("OK_GIVE_AGE");
- int age = Integer.parseInt(inFromServer.readLine());
- outToServer.println("OK_GIVE_CREDITS");
- int credits = Integer.parseInt(inFromServer.readLine());
- table.setValueAt(i + 1, i, 0);
- table.setValueAt(name, i, 1);
- table.setValueAt(surname, i, 2);
- table.setValueAt(age, i, 3);
- table.setValueAt(credits, i, 4);
- outToServer.println("OK_GET");
- }
- outToServer.println("GET_PLAYERS_SUCCESS");
- } catch (IOException e) {
- System.err.println(e.getMessage());
- }
- }
- }
- /**
- * Refresh player's ticket on tab tickets
- *
- * @param i ID of player
- * @param numbers text field with ticket numbers
- * @param credits text field with credits
- */
- public void refreshPlayerTicket(int i, JTextField numbers, JTextField credits) {
- if (executeCommand("GET_PLAYER_TICKET")) {
- outToServer.println(i);
- try {
- String resp = inFromServer.readLine();
- if (resp.equals("NO_TICKET")) {
- numbers.setText("Ticket not bought!");
- } else {
- numbers.setText(resp);
- }
- outToServer.println("GIVE_CREDITS");
- credits.setText(inFromServer.readLine());
- } catch (IOException | NumberFormatException e) {
- System.err.println(e.getMessage());
- }
- }
- }
- /**
- * Buy new ticket for specified player
- *
- * @param i ID of player
- * @return true if success, false if fail
- */
- public boolean buyNewTicket(int i) {
- if (executeCommand("BUY_TICKET")) {
- outToServer.println(i);
- try {
- if (inFromServer.readLine().equals("OK_BOUGHT")) {
- return true;
- }
- } catch (IOException e) {
- System.err.println(e.getMessage());
- }
- }
- return false;
- }
- /**
- * Refresh drawings results
- *
- * @param allDrawings text field with all drawings
- * @param thisDrawing text field with last drawing
- */
- public void refreshDrawingResults(JTextPane allDrawings, JTextPane thisDrawing) {
- if (executeCommand("DRAWING_RESULTS")) {
- try {
- String received, text;
- outToServer.println("GET_LAST_DRAWING");
- text = "";
- while (!(received = inFromServer.readLine()).equals("LAST_DRAWING_SENT")) {
- text += received;
- text += '\n';
- }
- thisDrawing.setText(text);
- outToServer.println("GET_ALL_DRAWINGS");
- text = "";
- while (!(received = inFromServer.readLine()).equals("ALL_DRAWINGS_SENT")) {
- text += received;
- text += '\n';
- }
- allDrawings.setText(text);
- } catch (IOException e) {
- System.err.println(e.getMessage());
- }
- outToServer.println("DRAWINGS_REFRESH_SUCCESS");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement