diff --git a/src/client/Client.java b/src/client/Client.java index e1ad43a3e9ce814ea328377f57757a4d4158c592..6a41efdb31f851be05d61e811eca05df86cc039e 100644 --- a/src/client/Client.java +++ b/src/client/Client.java @@ -5,24 +5,18 @@ */ package sisterclient; +import java.io.BufferedReader; +import java.io.DataOutputStream; import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.OutputStream; +import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; -import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketException; -import java.net.SocketTimeoutException; import java.net.UnknownHostException; -import org.json.JSONObject; import java.util.Random; -import java.util.Scanner; -import java.util.concurrent.TimeUnit; /** * * @author LUCKY @@ -72,27 +66,19 @@ public class Client { DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); receiverSocket.receive(receivePacket); String response = new String(receivePacket.getData()); - System.out.println("FROM SERVER:" + response); + System.out.println("RESPONSE:" + response); receiverSocket.close(); } void connectToServer(String _ipAddr, int _port ) throws IOException{ clientSocket = new Socket(_ipAddr, _port); } - void sendMessageToServer(Object _objIn) throws IOException{ - OutputStream out = clientSocket.getOutputStream(); - ObjectOutputStream oOut = new ObjectOutputStream(out); - oOut.writeObject(_objIn); - } - void receiveMessageFromServer() throws IOException, ClassNotFoundException{ - Object oTemp = null; - InputStream in = clientSocket.getInputStream(); - ObjectInputStream oIn = new ObjectInputStream(in); - oTemp = (Object) oIn.readObject(); - if(oTemp instanceof JSONObject){ - System.out.println(((JSONObject)oTemp).toString()); - }else{ - System.out.println("error/fail"); - } + void sendMessageToServer(String in) throws IOException{ + DataOutputStream out = new DataOutputStream(clientSocket.getOutputStream()); + out.writeBytes(in+'\n'); + } + public void receiveMessageFromServer() throws IOException, ClassNotFoundException{ + BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); + } public int getPlayerID() { diff --git a/src/client/SisTerClient.java b/src/client/SisTerClient.java new file mode 100644 index 0000000000000000000000000000000000000000..2aaf16bbca6ac7b245cb41cc037822b5823aa9e0 --- /dev/null +++ b/src/client/SisTerClient.java @@ -0,0 +1,46 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package sisterclient; + +/** + * + * @author LUCKY + */ + +import java.io.*; +import java.net.*; +import java.util.Map; +import java.util.Scanner; +import org.json.JSONObject; +import java.util.Random; +import java.util.concurrent.TimeUnit; + +public class SisTerClient { + //private static Random random; + /** + * @param args the command line arguments + */ + public static void main(String[] args) throws Exception { + /*String sentence; + String modifiedSentence; + BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in)); + Socket clientSocket = new Socket("localhost", 6789); + DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); + BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); + sentence = inFromUser.readLine(); + outToServer.writeBytes(sentence + '\n'); + modifiedSentence = inFromServer.readLine(); + System.out.println("FROM SERVER: " + modifiedSentence); + clientSocket.close(); */ + Client c = new Client(0,9999); + c.connectToServer("localhost", 9999); + c.sendMessageToServer("{\"method\": \"join\",\"username\": \"sister\",\"udp_address\": \"192.168.1.3\",\"udp_port\": 9999}"); + + c.sendMessageToClient("localhost", 8888,"{\"method\":\"prepare_proposal\",\"proposal_id\": ["+c.getProposalNum()+","+c.getPlayerID()+"]}"); + + } + +} diff --git a/src/server/Client.java b/src/server/Client.java new file mode 100644 index 0000000000000000000000000000000000000000..47c60784a015deaaf4ca91844935510ad8b8d058 --- /dev/null +++ b/src/server/Client.java @@ -0,0 +1,124 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package sisterserver; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; +import java.net.Socket; +import java.net.SocketException; + +import java.net.UnknownHostException; +import java.util.Random; +/** + * + * @author LUCKY + */ +public class Client { + private int playerID; + private int port; + private int proposalNum; + private final int timeout=15000; //in milliseconds + private boolean isProposer; + private String ipAddress; //ipsendiri + private Random random; + private int previouskpu; + private Socket clientSocket; + + public Client(int _playerid, int _port){ + playerID = _playerid; + port = _port; + proposalNum = 0; + isProposer = false; + random = new Random(); + previouskpu = -1; + } + public void setIsProposer(boolean _bool){ + isProposer = _bool; + } + public void setPort(int _port){ + port = _port; + } + void sendMessageToClient(String _addr, int port, String message) throws SocketException, UnknownHostException, IOException{ + DatagramSocket senderSocket = new DatagramSocket(); + InetAddress IPAddress = InetAddress.getByName(_addr); + byte[] sendData = new byte[1024]; + sendData = message.getBytes(); + DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); + double rand = random.nextDouble(); + if (rand < 0.85) { + senderSocket.send(sendPacket); + } + senderSocket.close(); + } + void receiveMessageFromClient(String _addr, int port) throws SocketException, IOException{ + byte[] receiveData = new byte[1024]; + DatagramSocket receiverSocket = new DatagramSocket(port); + receiverSocket.setReuseAddress(true); + InetAddress IPAddress = InetAddress.getByName(_addr); + DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); + receiverSocket.receive(receivePacket); + String response = new String(receivePacket.getData()); + System.out.println("RESPONSE:" + response); + receiverSocket.close(); + } + void connectToServer(String _ipAddr, int _port ) throws IOException{ + clientSocket = new Socket(_ipAddr, _port); + } + void sendMessageToServer(String in) throws IOException{ + DataOutputStream out = new DataOutputStream(clientSocket.getOutputStream()); + out.writeBytes(in+'\n'); + } + public void receiveMessageFromServer() throws IOException, ClassNotFoundException{ + BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); + + } + + public int getPlayerID() { + return playerID; + } + + public void setPlayerID(int playerID) { + this.playerID = playerID; + } + + public int getProposalNum() { + return proposalNum; + } + + public void setProposalNum(int proposalNum) { + this.proposalNum = proposalNum; + } + + public String getIpAddress() { + return ipAddress; + } + + public void setIpAddress(String ipAddress) { + this.ipAddress = ipAddress; + } + + + public int getPreviouskpu() { + return previouskpu; + } + + public void setPreviouskpu(int previouskpu) { + this.previouskpu = previouskpu; + } + + public Socket getClientSocket() { + return clientSocket; + } + + public void setClientSocket(Socket clientSocket) { + this.clientSocket = clientSocket; + } +} diff --git a/src/server/Server.java b/src/server/Server.java index 105a96ebe5007837168d46d9bbaa88664ffb3652..05825d40980fe34870c8c62af1ac30d57214f0af 100644 --- a/src/server/Server.java +++ b/src/server/Server.java @@ -1,23 +1,27 @@ -import java.net.URL; -import java.net.URLConnection; +package sisterserver; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; -import java.net.ConnectException; -import java.net.NoRouteToHostException; -import java.net.UnknownHostException; - -import org.json.JSONArray; import org.json.JSONObject; -import org.json.parser.JSONParser; public class Server implements Runnable { - private String host; + private String host; private int port; private Socket socket; private final String DEFAULT_HOST = "localhost"; private ServerSocket serverSocket; - PrintStream streamToClient; + private int numPlayer; + private boolean playing; + //PrintStream streamToClient; BufferedReader streamFromClient; Socket fromClient; static int count = 0; @@ -25,9 +29,9 @@ public class Server implements Runnable public Server() { - this.host = host; - this.port = port; - this.socket = socket; + this.host = "localhost"; + this.port = 9999; + this.socket = null; try{ serverSocket = new ServerSocket(1001); @@ -36,7 +40,19 @@ public class Server implements Runnable } } - + + public Server(String _host, int _port){ + try{ + host = _host; + port = _port; + serverSocket = new ServerSocket(_port); + socket = serverSocket.accept(); + playing = false; + }catch(IOException e){ + + } + + } public boolean isWerewolf() { boolean yes = false; @@ -56,7 +72,7 @@ public class Server implements Runnable public JSONObject receiveJSON() throws IOException { InputStream in = socket.getInputStream(); - ObjectInputStream i = new ObjectInputStream(); + ObjectInputStream i = new ObjectInputStream(in); JSONObject line = null; try { line = (JSONObject) i.readObject(); @@ -65,13 +81,13 @@ public class Server implements Runnable } return line; + } public void sendJSON(JSONObject jsonObj) throws IOException { JSONObject jsonObject2 = new JSONObject(); - jsonObject2.put("key", new Paper(250,333)); - + OutputStream out = socket.getOutputStream(); ObjectOutputStream o = new ObjectOutputStream(out); o.writeObject(jsonObject2); @@ -84,13 +100,13 @@ public class Server implements Runnable while(true){ fromClient = serverSocket.accept(); count++; - streamFromClient = new BufferedReader(fromClient.getInputStream()); + //streamFromClient = new BufferedReader(fromClient.getInputStream()); - InputStreamReader = new InputStreamReader((fromClient.getInputStream())); - PrintStream streamToClient = new PrintStream(fromClient.getInputStream()); + InputStreamReader in = new InputStreamReader((fromClient.getInputStream())); + //PrintStream streamToClient = new PrintStream(fromClient.getInputStream()); String str = streamFromClient.readLine(); System.out.println(str); - streamToClient.println("Halo, "+str); + //streamToClient.println("Halo, "+str); } } catch (Exception e){ e.printStackTrace(); @@ -102,7 +118,22 @@ public class Server implements Runnable } } } - - + + public String receiveMessage() throws IOException{ + String temp = null; + BufferedReader inFromClient =new BufferedReader(new InputStreamReader(socket.getInputStream())); + temp = inFromClient.readLine(); + return temp; + } + public void sendMessage(String out) throws IOException{ + DataOutputStream outToClient = new DataOutputStream(socket.getOutputStream()); + String response = out + '\n'; + outToClient.writeBytes(response); + } + @Override + public void run() { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + } \ No newline at end of file diff --git a/src/server/SisterServer.java b/src/server/SisterServer.java new file mode 100644 index 0000000000000000000000000000000000000000..2edc01783593a060ae8c5c31e7a61a57be248ae8 --- /dev/null +++ b/src/server/SisterServer.java @@ -0,0 +1,48 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package sisterserver; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.InputStreamReader; +import java.net.*; +import org.json.JSONObject; + +/** + * + * @author LUCKY + */ +public class SisterServer { + + /** + * @param args the command line arguments + */ + public static void main(String[] args) throws Exception { + /* String clientSentence; + String capitalizedSentence; + ServerSocket welcomeSocket = new ServerSocket(6789); + + while(true) + { + Socket connectionSocket = welcomeSocket.accept(); + BufferedReader inFromClient =new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); + DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); + clientSentence = inFromClient.readLine(); + System.out.println("Received: " + clientSentence); + capitalizedSentence = clientSentence.toUpperCase() + '\n'; + outToClient.writeBytes(capitalizedSentence); + + }*/ + /*Server s = new Server("localhost",9999); + String request = s.receiveMessage(); + System.out.println(request); + JSONObject j = new JSONObject(request); + System.out.println(j.get("method"));*/ + Client c = new Client(1,9999); + c.receiveMessageFromClient("localhost", 8888); + } + +}