Skip to content
Snippets Groups Projects
Commit a62ed11b authored by Lucky's avatar Lucky
Browse files

add

parent 69b61004
Branches
No related merge requests found
......@@ -17,6 +17,9 @@ import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Random;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
*
* @author LUCKY
......@@ -28,9 +31,13 @@ public class Client {
private final int timeout=15000; //in milliseconds
private boolean isProposer;
private String ipAddress; //ipsendiri
private String serverAddress;
private Random random;
private int previouskpu;
private Socket clientSocket;
private boolean tempc2s;
private boolean tempc2c;
public Client(int _playerid, int _port){
playerID = _playerid;
......@@ -39,6 +46,9 @@ public class Client {
isProposer = false;
random = new Random();
previouskpu = -1;
tempc2s = true;
tempc2c = true;
serverAddress = "localhost";
}
public void setIsProposer(boolean _bool){
isProposer = _bool;
......@@ -67,20 +77,124 @@ public class Client {
receiverSocket.receive(receivePacket);
String response = new String(receivePacket.getData());
System.out.println("RESPONSE:" + response);
receiverSocket.close();
//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 peerAsClient() throws UnknownHostException, SocketException, IOException{
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String input,sentence="";
while(true){
BufferedReader inFromUser =new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("localhost");
peermenu();
input = inFromUser.readLine();
switch(input){
case "1" : sentence = "{\"method\": \"prepare_proposal\",\"proposal_id\": ["+proposalNum+","+playerID+"] }"; break;
case "2" : sentence = "{\"method\": \"accept_proposal\",\"proposal_id\": ["+proposalNum+","+playerID+"], \"kpu_id\" : 0 }";break;
case "3" : sentence = "{\"method\": \"vote_werewolf\",\"player_id\": 2 }";break;
case "4" : sentence = "{\"method\": \"vote_civilian\",\"player_id\": 2 }";break;
default : sentence ="";break;
}
sendData = sentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
clientSocket.send(sendPacket);
if (sentence != ""){
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String modifiedSentence = new String(receivePacket.getData());
System.out.println("FROM SERVER:" + modifiedSentence);
}
clientSocket.close();
}
}
public void receiveMessageFromServer() throws IOException, ClassNotFoundException{
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
void peermenu(){
System.out.println("1.prepare proposal");
System.out.println("2.accept proposal");
System.out.println("3.vote werewolf");
System.out.println("4.vote_civillian");
}
public void peerAsServer() throws SocketException, IOException{
DatagramSocket serverSocket = new DatagramSocket(port);
String response,method;
while(tempc2c)
{
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String request = new String( receivePacket.getData());
System.out.println("RECEIVED: " + request);
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
if (isJSON(request)){
JSONObject j = new JSONObject(request);
method = j.get("method").toString();
switch(method){
case "prepare_proposal" : response = "{\"status\": \"ok\",\"description\":\"accepted\", \"previous_accepted\" : "+previouskpu+"}";break;
case "accept_proposal" : response = "{\"status\": \"ok\",\"description\":\"accepted\"}";break;
case "vote_werewolf" : response = "{\"status\": \"ok\",\"description\":\"Vote Accepted\"}";break;
case "vote_civilian": response ="{\"status\": \"ok\",\"description\":\"Vote Accepted\"}";break;
default: response = ""; break;
}
sendData = response.getBytes();
DatagramPacket sendPacket =new DatagramPacket(sendData, sendData.length, IPAddress, port);
}else{
tempc2c=false;
}
}
}
public void client2server() throws IOException{
String message="",response="",input;
while(tempc2s){
client2servermenu();
BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in));
clientSocket = new Socket(serverAddress, port);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
input = inFromUser.readLine();
switch(input){
case "1" : message = "{\"method\": \"join\",\"username\": \"sister\",\"udp_address\": \"192.168.1.3\",\"udp_port\": 9999}";break;
case "2" : message = "{\"method\": \"leave\"}";break;
case "3" : message = "{\"method\": \"ready\"}";break;
case "4" : message = "{\"method\": \"client_address\"}";break;
case "5" : message = "{\"method\": \"vote_result_civilian\",\"vote_status\": 1,\"player_killed\": 4,\"vote_result\": [[0, 1], [1, 2]]}";break;
default : message = "hua";tempc2s = false;break;
}
outToServer.writeBytes(message + '\n');
if (message == "hua"){}
else{
response = inFromServer.readLine();
System.out.println("response: " + response);
}
clientSocket.close();
}
}
private boolean isJSON(String test){
try{
new JSONObject(test);
}catch(JSONException ex){
try{
new JSONArray(test);
}catch(JSONException ex2){
return false;
}
}
return true;
}
public void client2servermenu(){
System.out.println("1.join");
System.out.println("2.leave");
System.out.println("3.ready");
System.out.println("4.list client");
System.out.println("5.civ killed");
}
public int getPlayerID() {
return playerID;
}
......
......@@ -24,22 +24,12 @@ public class SisTerClient {
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception {
/*String sentence;
String modifiedSentence;
System.out.println("Masukan Port");
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()+"]}");
int port = Integer.parseInt(inFromUser.readLine().toString());
Client c = new Client(0,port);
c.client2server();
//c.peerAsClient();
}
......
......@@ -3,7 +3,7 @@
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package sisterserver;
package sisterclient;
import java.io.BufferedReader;
import java.io.DataOutputStream;
......@@ -17,6 +17,9 @@ import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Random;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
*
* @author LUCKY
......@@ -28,9 +31,13 @@ public class Client {
private final int timeout=15000; //in milliseconds
private boolean isProposer;
private String ipAddress; //ipsendiri
private String serverAddress;
private Random random;
private int previouskpu;
private Socket clientSocket;
private boolean tempc2s;
private boolean tempc2c;
public Client(int _playerid, int _port){
playerID = _playerid;
......@@ -39,6 +46,9 @@ public class Client {
isProposer = false;
random = new Random();
previouskpu = -1;
tempc2s = true;
tempc2c = true;
serverAddress = "localhost";
}
public void setIsProposer(boolean _bool){
isProposer = _bool;
......@@ -67,20 +77,124 @@ public class Client {
receiverSocket.receive(receivePacket);
String response = new String(receivePacket.getData());
System.out.println("RESPONSE:" + response);
receiverSocket.close();
//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 peerAsClient() throws UnknownHostException, SocketException, IOException{
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String input,sentence="";
while(true){
BufferedReader inFromUser =new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("localhost");
peermenu();
input = inFromUser.readLine();
switch(input){
case "1" : sentence = "{\"method\": \"prepare_proposal\",\"proposal_id\": ["+proposalNum+","+playerID+"] }"; break;
case "2" : sentence = "{\"method\": \"accept_proposal\",\"proposal_id\": ["+proposalNum+","+playerID+"], \"kpu_id\" : 0 }";break;
case "3" : sentence = "{\"method\": \"vote_werewolf\",\"player_id\": 2 }";break;
case "4" : sentence = "{\"method\": \"vote_civilian\",\"player_id\": 2 }";break;
default : sentence ="";break;
}
sendData = sentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
clientSocket.send(sendPacket);
if (sentence != ""){
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String modifiedSentence = new String(receivePacket.getData());
System.out.println("FROM SERVER:" + modifiedSentence);
}
clientSocket.close();
}
}
public void receiveMessageFromServer() throws IOException, ClassNotFoundException{
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
void peermenu(){
System.out.println("1.prepare proposal");
System.out.println("2.accept proposal");
System.out.println("3.vote werewolf");
System.out.println("4.vote_civillian");
}
public void peerAsServer() throws SocketException, IOException{
DatagramSocket serverSocket = new DatagramSocket(port);
String response,method;
while(tempc2c)
{
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String request = new String( receivePacket.getData());
System.out.println("RECEIVED: " + request);
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
if (isJSON(request)){
JSONObject j = new JSONObject(request);
method = j.get("method").toString();
switch(method){
case "prepare_proposal" : response = "{\"status\": \"ok\",\"description\":\"accepted\", \"previous_accepted\" : "+previouskpu+"}";break;
case "accept_proposal" : response = "{\"status\": \"ok\",\"description\":\"accepted\"}";break;
case "vote_werewolf" : response = "{\"status\": \"ok\",\"description\":\"Vote Accepted\"}";break;
case "vote_civilian": response ="{\"status\": \"ok\",\"description\":\"Vote Accepted\"}";break;
default: response = ""; break;
}
sendData = response.getBytes();
DatagramPacket sendPacket =new DatagramPacket(sendData, sendData.length, IPAddress, port);
}else{
tempc2c=false;
}
}
}
public void client2server() throws IOException{
String message="",response="",input;
while(tempc2s){
client2servermenu();
BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in));
clientSocket = new Socket(serverAddress, port);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
input = inFromUser.readLine();
switch(input){
case "1" : message = "{\"method\": \"join\",\"username\": \"sister\",\"udp_address\": \"192.168.1.3\",\"udp_port\": 9999}";break;
case "2" : message = "{\"method\": \"leave\"}";break;
case "3" : message = "{\"method\": \"ready\"}";break;
case "4" : message = "{\"method\": \"client_address\"}";break;
case "5" : message = "{\"method\": \"vote_result_civilian\",\"vote_status\": 1,\"player_killed\": 4,\"vote_result\": [[0, 1], [1, 2]]}";break;
default : message = "hua";tempc2s = false;break;
}
outToServer.writeBytes(message + '\n');
if (message == "hua"){}
else{
response = inFromServer.readLine();
System.out.println("response: " + response);
}
clientSocket.close();
}
}
private boolean isJSON(String test){
try{
new JSONObject(test);
}catch(JSONException ex){
try{
new JSONArray(test);
}catch(JSONException ex2){
return false;
}
}
return true;
}
public void client2servermenu(){
System.out.println("1.join");
System.out.println("2.leave");
System.out.println("3.ready");
System.out.println("4.list client");
System.out.println("5.civ killed");
}
public int getPlayerID() {
return playerID;
}
......
......@@ -10,11 +10,13 @@ import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class Server implements Runnable
{
private Paxos paxos;
//private Paxos paxos;
private String host;
private int port;
private Socket socket;
......@@ -22,11 +24,13 @@ public class Server implements Runnable
private ServerSocket serverSocket;
private int numPlayer;
private boolean playing;
//PrintStream streamToClient;
private boolean temps2c;
//PrintStream streamToClient;
BufferedReader streamFromClient;
Socket fromClient;
static int count = 0;
Thread thread;
public Server()
{
......@@ -43,15 +47,11 @@ 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){
}
host = _host;
port = _port;
playing = false;
numPlayer= 0;
temps2c = true;
}
public boolean isWerewolf()
......@@ -120,17 +120,51 @@ 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 server2client() throws IOException{
String response,request,method;
ServerSocket serverSocket = new ServerSocket(port);
while(temps2c)
{
Socket connectionSocket = serverSocket.accept();
BufferedReader inFromClient =new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
request = inFromClient.readLine();
System.out.println("Received: " + request);
if (isJSON(request)){
JSONObject j = new JSONObject(request);
method = j.get("method").toString();
switch(method){
case "join" : response = "{\"status\": \"ok\",\"player_id\":"+numPlayer+"}";numPlayer++;break;
case "leave" : response = "{\"status\": \"ok\"}";break;
case "ready" : response = "{\"status\": \"ok\",\"description\":\"Waiting other player to start\"}";break;
case "client_address": response ="not";break;
case "vote_result_civilian": response = "{\"status\": \"ok\",\"description\":\"civ Killed\"}";break;
default: response = ""; break;
}
response = response + '\n';
outToClient.writeBytes(response);
}else{
temps2c=false;
}
}
}
public void sendMessage(String out) throws IOException{
DataOutputStream outToClient = new DataOutputStream(socket.getOutputStream());
String response = out + '\n';
outToClient.writeBytes(response);
private boolean isJSON(String test){
try{
new JSONObject(test);
}catch(JSONException ex){
try{
new JSONArray(test);
}catch(JSONException ex2){
return false;
}
}
return true;
}
@Override
public void run() {
......
......@@ -21,28 +21,18 @@ 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);
System.out.println("Masukan address");
BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in));
String address = inFromUser.readLine().toString();
System.out.println("Masukan Port");
inFromUser = new BufferedReader( new InputStreamReader(System.in));
int port = Integer.parseInt(inFromUser.readLine().toString());
Server s = new Server(address,port);
s.server2client();
//Client c = new Client(0,9999);
//c.peerAsServer();
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);
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment