Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add basic Client and server credentials
  • Loading branch information
joesweeney committed Apr 15, 2017
1 parent cf0426d commit fe73ebc
Show file tree
Hide file tree
Showing 2 changed files with 165 additions and 0 deletions.
5 changes: 5 additions & 0 deletions serverCredentials.txt
@@ -0,0 +1,5 @@
user: 9
password: 919747

user: 10
password:183220
160 changes: 160 additions & 0 deletions src/RmCheckersClient.java
@@ -0,0 +1,160 @@
// RmCheckersClient.java is a client that interacts with Sam, a checkers
// server. It is designed to illustrate how to communicate with the server
// in a minimal way. It is not meant to be beautiful java code.
// Given the correct machine name and port for the server, a user id, and a
// password (_machine, _port, _user, and _password in the code), running
// this program will initiate connection and start a game with the default
// player. (the _machine and _port values used should be correct, but check
// the protocol document.)
//
// the program has been tested and used under Java 5.0, and 6.0, but probably
// would work under older or newer versions. (also works under Java 8).
//
// Copyright (C) 2008 Robert McCartney

// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of the
// License, or (at your option) any later version.

// This program is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA

import java.io.*;
import java.net.*;

public class RmCheckersClient {

protected final static String _user1 = "9";
protected final static String _password1 = "919747";
protected final static String _user2 = "10";
protected final static String _password2 = "183220";
protected final static String _opponent = "0";
protected final String _machine = "icarus.engr.uconn.edu";
protected int _port = 3499;
protected Socket _socket = null;
protected PrintWriter _out = null;
protected BufferedReader _in = null;

protected String _gameID;
protected String _myColor;

public RmCheckersClient(){
_socket = openSocket();
}

public Socket getSocket(){
return _socket;
}

public PrintWriter getOut(){
return _out;
}

public BufferedReader getIn(){
return _in;
}

public void setGameID(String id){
_gameID = id;
}

public String getGameID() {
return _gameID;
}

public void setColor(String color){
_myColor = color;
}

public String getColor() {
return _myColor;
}

public static void main(String[] argv){
String readMessage;
RmCheckersClient myClient = new RmCheckersClient();

try{
myClient.readAndEcho(); // start message
myClient.readAndEcho(); // ID query
myClient.writeMessageAndEcho(_user1); // user ID

myClient.readAndEcho(); // password query
myClient.writeMessage(_password1); // password

myClient.readAndEcho(); // opponent query
myClient.writeMessageAndEcho(_opponent); // opponent

myClient.setGameID(myClient.readAndEcho().substring(5,10)); // game
myClient.setColor(myClient.readAndEcho().substring(6,11)); // color
System.out.println("I am playing as "+myClient.getColor()+ " in game number "+ myClient.getGameID());
readMessage = myClient.readAndEcho();
// depends on color--a black move if i am white, Move:Black:i:j
// otherwise a query to move, ?Move(time):
if (myClient.getColor().equals("White")) {
readMessage = myClient.readAndEcho(); // move query
myClient.writeMessageAndEcho("(2:4):(3:5)");
readMessage = myClient.readAndEcho(); // white move
readMessage = myClient.readAndEcho(); // black move
readMessage = myClient.readAndEcho(); // move query
// here you would need to move again
}
else {
myClient.writeMessageAndEcho("(5:3):(4:4)");
readMessage = myClient.readAndEcho(); // black move
readMessage = myClient.readAndEcho(); // white move
readMessage = myClient.readAndEcho(); // move query
// here you would need to move again
}

myClient.getSocket().close();
} catch (IOException e) {
System.out.println("Failed in read/close");
System.exit(1);
}
}

public String readAndEcho() throws IOException
{
String readMessage = _in.readLine();
System.out.println("read: "+readMessage);
return readMessage;
}

public void writeMessage(String message) throws IOException
{
_out.print(message+"\r\n");
_out.flush();
}

public void writeMessageAndEcho(String message) throws IOException
{
_out.print(message+"\r\n");
_out.flush();
System.out.println("sent: "+ message);
}

public Socket openSocket(){
//Create socket connection, adapted from Sun example
try{
_socket = new Socket(_machine, _port);
_out = new PrintWriter(_socket.getOutputStream(), true);
_in = new BufferedReader(new InputStreamReader(_socket.getInputStream()));
} catch (UnknownHostException e) {
System.out.println("Unknown host: " + _machine);
System.exit(1);
} catch (IOException e) {
System.out.println("No I/O");
System.exit(1);
}
return _socket;
}
}

0 comments on commit fe73ebc

Please sign in to comment.