Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Spiel;
- import java.io.EOFException;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.net.InetAddress;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.util.ArrayList;
- import java.util.Scanner;
- import javax.swing.JFrame;
- import javax.swing.JOptionPane;
- @SuppressWarnings("static-access")
- public class Connection {
- public static Main m;
- public DrawArea DA;
- public static MyPanelRater DAR;
- public static MyPanel MyP;
- private static Connection con;
- private static Console console = new Console();
- private static boolean aktive;
- /*
- * Client
- */
- public boolean clientConnection(String ip,int port) {
- aktive = true;
- try {
- ConnectToServer(ip, port);
- setupStreams();
- whileChatting();
- serversendMessage("connected "+m.UserName);
- } catch (Exception e) {
- return false;
- }
- return true;
- }
- private static Thread thread;
- private static Thread thread1;
- private static Thread thread2;
- private static Socket connenction;
- private static ObjectOutputStream output;
- private static ObjectInputStream input;
- private static Object message;
- private void ConnectToServer(String serverip,int Port) throws IOException {
- console.addTextConsole("Versuche verbindung zu "+serverip+":"+""+" verbinden!");
- connenction = new Socket(InetAddress.getByName(serverip), Port);
- console.addTextConsole("Verbunden zu: "+connenction.getInetAddress().getHostName());
- }
- private void setupStreams() throws IOException{
- console.addTextConsole("Baue Verbindungsbrücken auf");
- output = new ObjectOutputStream(connenction.getOutputStream());
- output.flush();
- input = new ObjectInputStream(connenction.getInputStream());
- }
- private void whileChatting() throws IOException{
- console.addTextConsole("Verbunden");
- try {thread.interrupt();} catch (Exception e) {}
- thread=null;
- thread = new Thread(){
- public void run(){
- do{
- try {
- if(aktive==false){
- this.interrupt();
- }
- message = (String)input.readObject();
- try {
- String s = (String) message;
- Scanner scanner = new Scanner(s);
- String next = scanner.next();
- if(s.equals("killconnection")){
- killConnection();
- this.interrupt();
- }else if(s.equals("connected")){
- }else if(s.equals("clear")){
- DAR.clear();
- }else if(s.equals("endround")){
- killConnection();
- System.exit(0);
- }else if(s.equals("rollenswaper")){
- MyP.rollenswaper();
- MyR.rollenswaper();
- }else if(s.equals("close")){
- try {MyP.rollenswaper();} catch (Exception e) {}
- try {MyR.rollenswaper();} catch (Exception e) {}
- }else if(next.equals("ratewort")){
- if(scanner.hasNext()){
- String st2 = scanner.next();
- if(scanner.hasNext()){
- String st3 = scanner.next();
- while(scanner.hasNext()){
- st3 = st3+" "+scanner.next();
- }
- try {MyP.addToLog(st2+": "+st3);} catch (Exception e) {}
- try {MyR.AddLogText(st2+": "+st3);} catch (Exception e) {}
- }
- }
- }else if(next.equals("points")){
- if(scanner.hasNext()){
- int points = Integer.parseInt(scanner.next());
- try {MyP.setPoinsValue(points);} catch (Exception e) {}
- try {MyR.setPoinsValue(points);} catch (Exception e) {}
- }
- }else if(next.equals("start")){
- String st2 = scanner.next();
- if(st2.equals("rate")){
- if(MyP.isAktive()==false){
- String st3 = scanner.next();
- MyPanelRater rater = new MyPanelRater();
- rater.setword(st3);
- Main.frame.dispose();
- }
- }else if(st2.equals("male")){
- MyPanel male = new MyPanel();
- String random = randomword.getRandomWord();
- serversendMessage("start rate "+random);
- male.AddLogText(random);
- }
- }else if(next.equals("erraten")){
- }else{
- Scanner sc = new Scanner(s);
- while(sc.hasNextLine()){
- String str = sc.nextLine();
- Scanner sca = new Scanner(str);
- ArrayList<Integer> ar2 = new ArrayList<>();
- while(sca.hasNext()){
- ar2.add(Integer.parseInt(sca.next()));
- }
- sca.close();
- all.add(ar2);
- //try {DAR.drawLine(ar2.get(0), ar2.get(1), ar2.get(2), ar2.get(3), ar2.get(4), ar2.get(5), ar2.get(6), ar2.get(7));} catch (Exception e2) {e2.printStackTrace();}
- }
- Thread t = new Thread(){
- public void run(){
- ArrayList<ArrayList<Integer>> alle= all;
- all=new ArrayList<>();
- for(int i = 0;i<alle.size();i++){
- ArrayList<Integer> ar2 = alle.get(i);
- try {DAR.drawLine(ar2.get(0), ar2.get(1), ar2.get(2), ar2.get(3), ar2.get(4), ar2.get(5), ar2.get(6), ar2.get(7));} catch (Exception e2) {/*e2.printStackTrace();*/}
- try {sleep(100/alle.size());} catch (Exception e) {}
- }
- }
- };
- t.start();
- sc.close();
- }
- scanner.close();
- } catch (Exception e) {
- }
- } catch (Exception e) {
- if(e.getMessage().equals("Connection reset")){
- System.exit( 0 );
- }
- }
- }while(true);
- }
- };
- thread.start();
- }
- public boolean Hostcon(String Ip, int Port) {
- try {
- aktive = true;
- serverstartRunning(Port);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- //on sucsess
- return true;
- }
- /*
- * Server
- */
- private boolean waitingforcon;
- public void stopWaitingforConnection(){
- waitingforcon=false;
- }
- private static ServerSocket server;
- private static ObjectOutputStream serveroutput;
- private static ObjectInputStream serverinput;
- private static Socket serverconnection;
- public static ArrayList<String> Usernames= new ArrayList<>();
- private static ArrayList<ObjectOutputStream> serveroutputStreams= new ArrayList<>();
- private static ArrayList<ObjectInputStream> serverinputStreams= new ArrayList<>();
- private static ArrayList<Integer> points = new ArrayList<>();
- private boolean serverstartRunning(int port) throws IOException{
- points.clear();
- points.add(0);
- aktive=true;
- Malernumber =1;
- serverinputStreams.clear();
- serveroutputStreams.clear();
- waitingforcon = true;
- try {thread1.interrupt();} catch (Exception e) {}
- thread1=null;
- thread1 = new Thread(){
- public void run(){
- ordner=0;
- try {
- try {
- server = new ServerSocket(port,100);
- } catch (IOException e1) {}
- while(waitingforcon){
- try {
- if(aktive==false){
- this.interrupt();
- }
- serverwaitForConnection();
- serversetupStreams();
- serverinputStreams.add(serverinput);
- serveroutputStreams.add(serveroutput);
- points.add(0);
- createServerWhileChattingThread();
- console.addTextConsole("Verbindung hergestellt");
- this.interrupt();
- } catch (Exception e) {}
- }
- } catch (Exception e) {
- console.addTextConsole("Der Server hat verbindung getrennt");
- this.interrupt();
- }finally{
- this.interrupt();
- }
- }
- };
- thread1.start();
- console.addTextConsole("Server gestartet!");
- return true;
- }
- private void serverwaitForConnection() throws IOException{
- serverconnection = server.accept();
- }
- private void serversetupStreams() throws IOException{
- console.addTextConsole("Baue Verbindungsbrücken auf!");
- serveroutput = new ObjectOutputStream(serverconnection.getOutputStream());
- serveroutput.flush();
- serverinput = new ObjectInputStream(serverconnection.getInputStream());
- }
- private static int ordner=0;
- private WaitforConnection wfc;
- private static ArrayList<ArrayList<Integer>> all = new ArrayList<ArrayList<Integer>>();
- private void onemoreCon(){
- wfc.oneMoreConnection();
- }
- public static void serversendMessage(Object messagem){
- if(messagem==null){
- return;
- }
- if(serveroutputStreams.size()==0&&output==null){
- console.addTextConsole("Keine verbindung");
- }
- try {
- for(int i = 0;serveroutputStreams.size()>i;i++){
- try {} catch (Exception e) {}
- ObjectOutputStream os = serveroutputStreams.get(i);
- os.writeObject(messagem);
- os.flush();
- }
- } catch (Exception e) {
- e.printStackTrace();
- console.addTextConsole("Verbindungs Error!");
- }
- try {
- if(output!=null){
- try {} catch (Exception e) {}
- if(output!=null){
- output.writeObject(messagem);
- output.flush();
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- console.addTextConsole("Verbindungs Error!");
- }
- }
- public static void serversendMessageToSingleClient(Object messagem,int ClientID){
- if(serveroutputStreams.size()==0&&output==null){
- console.addTextConsole("Keine verbindung");
- }
- try {
- try {} catch (Exception e) {}
- ObjectOutputStream os = serveroutputStreams.get(ClientID);
- os.writeObject(messagem);
- os.flush();
- } catch (Exception e) {
- e.printStackTrace();
- console.addTextConsole("Verbindungs Error!");
- }
- }
- public Connection getConnection() {
- return con;
- }
- public static boolean killConnection(){
- String kill = "killconnection";
- message = (Object) kill;
- try {serversendMessage(message);} catch (Exception e) {}
- aktive = false;
- Malernumber = 1;
- ordner = 0;
- serverinputStreams.clear();
- serveroutputStreams.clear();
- console.addTextConsole("Alte Verbindung Geschlossen");
- try {
- for(int i = 0;i<aktiveThreads.size();i++){
- aktiveThreads.get(i).interrupt();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- aktiveThreads.clear();
- try {thread.interrupt();} catch (Exception e) {}
- try {thread1.interrupt();} catch (Exception e) {}
- try {thread2.interrupt();} catch (Exception e) {}
- try {thread=null;} catch (Exception e) {}
- try {thread1=null;} catch (Exception e) {}
- try {thread2=null;} catch (Exception e) {}
- try {server.close();server = null;} catch (Exception e) {}
- try {serverconnection.close();serverconnection = null;} catch (Exception e) {}
- try {serverinput.close();serverinput=null;} catch (Exception e) {}
- try {serveroutput.close();serveroutput=null;} catch (Exception e) {}
- try {output.close();output=null;} catch (Exception e) {}
- try {input.close();input = null;} catch (Exception e) {}
- try {connenction.close();connenction=null;} catch (Exception e) {}
- try {message=null;} catch (Exception e) {}
- return true;
- }
- public static ArrayList<ArrayList<Integer>> All;
- private static MyPanelRater MyR;
- private static GetRandomWord randomword;
- private static int erraten;
- private static int Malernumber;
- public static void rollenswaper(String Name){
- erraten++;
- if(!Name.equals("Server Server")){
- if(Name.equals(m.UserName)){
- if(erraten==1){
- points.set(0, points.get(0)+2);
- }else{
- points.set(0, points.get(0)+1);
- }
- }else{
- for(int i = 0;i<Usernames.size();i++){
- if(Usernames.get(i).equalsIgnoreCase(Name)){
- if(erraten==1){
- points.set(i+1, points.get(i+1)+2);
- }else{
- points.set(i+1, points.get(i+1)+1);
- }
- }
- }
- }
- if(erraten==1){
- if(Malernumber==1){
- points.set(0, points.get(0)+1);
- }else if(Malernumber==0){
- points.set(points.size()-1, points.get(points.size()-1)+1);
- }else{
- points.set(Malernumber-1, points.get(Malernumber-1)+1);
- }
- }
- }
- if(erraten==serverinputStreams.size()||erraten>serverinputStreams.size()){
- erraten=0;
- serversendMessage("close");
- try {MyP.rollenswaper();} catch (Exception e) {}
- try {MyR.rollenswaper();} catch (Exception e) {}
- if(Malernumber==serverinputStreams.size()||Malernumber>serverinputStreams.size()){
- serversendMessageToSingleClient("start male", Malernumber-1);
- Malernumber = 0;
- }else if (Malernumber==0){
- if(Main.roundnuber>0){
- Main.roundnuber--;
- MyPanel mp = new MyPanel();
- String random = randomword.getRandomWord();
- con.serversendMessage("start rate "+random);
- mp.AddLogText(random);
- Malernumber++;
- }else{
- serversendMessage("endround");
- killConnection();
- System.exit(0);
- }
- }else{
- serversendMessageToSingleClient("start male", Malernumber-1);
- Malernumber++;
- }
- }else{
- if(erraten==1){
- serversendMessage("ratewort "+Name+" hat es erraten!");
- try {MyP.addToLog(Name+": hat es erraten!");} catch (Exception e) {}
- try {MyR.AddLogText(Name+": hat es erraten!");} catch (Exception e) {}
- }else{
- serversendMessage("ratewort "+Name+" hat es erraten!");
- try {MyP.addToLog(Name+": hat es erraten!");} catch (Exception e) {}
- try {MyR.AddLogText(Name+": hat es erraten!");} catch (Exception e) {}
- }
- }
- sendPoinsToall();
- }
- public static void sendPoinsToall() {
- try {MyP.setPoinsValue(points.get(0));} catch (Exception e) {}
- try {MyR.setPoinsValue(points.get(0));} catch (Exception e) {}
- for(int i = 0;i<serveroutputStreams.size();i++){
- serversendMessageToSingleClient("points "+points.get(i+1), i);
- }
- }
- public static boolean isServer(){
- if(serverinputStreams.size()!=0){
- return true;
- }else{
- return false;
- }
- }
- public static void forceNextRound(){
- erraten=serverinputStreams.size();
- rollenswaper("Server Server");
- }
- private static ArrayList<Thread> aktiveThreads = new ArrayList<>();
- private void createServerWhileChattingThread(){
- Thread thread0 = new Thread(){
- public void run(){
- ObjectInputStream input0=serverinputStreams.get(ordner);
- ordner++;
- do{
- try {
- if(aktive==false){
- this.interrupt();
- }
- Object message = null;
- message = input0.readObject();
- try {
- Boolean respond = true;
- Boolean sendpoins = false;
- String s = (String) message;
- Scanner scanner = new Scanner(s);
- String next = scanner.next();
- if(s.equals("killconnection")){
- killConnection();
- this.interrupt();
- }else if(s.equals("clear")){
- try {DAR.clear();} catch (Exception e) {}
- }else if(next.equals("erraten")){
- respond=false;
- rollenswaper(scanner.next());
- }else if(next.equals("connected")){
- String username = scanner.next();
- Usernames.add(username);
- respond=false;
- onemoreCon();
- }else if(s.equals("rollenswaper")){
- }else if(next.equals("ratewort")){
- if(scanner.hasNext()){
- String st2 = scanner.next();
- if(scanner.hasNext()){
- String st3 = scanner.next();
- while(scanner.hasNext()){
- st3 = st3+" "+scanner.next();
- }
- try {MyP.addToLog(st2+": "+st3);} catch (Exception e) {}
- try {MyR.AddLogText(st2+": "+st3);} catch (Exception e) {}
- }
- }
- }else if(next.equals("start")){
- String st2 = scanner.next();
- if(st2.equals("rate")){
- String st3 = scanner.next();
- MyPanelRater rater = new MyPanelRater();
- rater.setword(st3);
- }else if(st2.equals("male")){
- }
- sendpoins = true;
- }else{
- Scanner sc = new Scanner(s);
- while(sc.hasNextLine()){
- String str = sc.nextLine();
- Scanner sca = new Scanner(str);
- ArrayList<Integer> ar2 = new ArrayList<>();
- while(sca.hasNext()){
- ar2.add(Integer.parseInt(sca.next()));
- }
- sca.close();
- all.add(ar2);
- }
- Thread t = new Thread(){
- public void run(){
- ArrayList<ArrayList<Integer>> alle= all;
- all=new ArrayList<>();
- for(int i = 0;i<alle.size();i++){
- ArrayList<Integer> ar2 = alle.get(i);
- try {DAR.drawLine(ar2.get(0), ar2.get(1), ar2.get(2), ar2.get(3), ar2.get(4), ar2.get(5), ar2.get(6), ar2.get(7));} catch (Exception e2) {/*e2.printStackTrace();*/}
- try {sleep(100/alle.size());} catch (Exception e) {}
- }
- }
- };
- t.start();
- sc.close();
- }
- if(respond==true){
- serversendMessage(message);
- }
- if(sendpoins==true){
- sendPoinsToall();
- }
- scanner.close();
- } catch (Exception e) {
- }
- } catch (Exception e) {
- if(e.getMessage().equals("Connection reset")){
- System.exit( 0 );
- }
- }
- }while(true);
- }
- };
- thread0.start();
- aktiveThreads.add(thread0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement