Advertisement
TrodelHD

Untitled

Apr 2nd, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.45 KB | None | 0 0
  1. package Spiel;
  2.  
  3. import java.io.EOFException;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.ObjectInputStream;
  7. import java.io.ObjectOutputStream;
  8. import java.net.InetAddress;
  9. import java.net.ServerSocket;
  10. import java.net.Socket;
  11. import java.util.ArrayList;
  12. import java.util.Scanner;
  13.  
  14. import javax.swing.JFrame;
  15. import javax.swing.JOptionPane;
  16. @SuppressWarnings("static-access")
  17. public class Connection {
  18.  
  19. public static Main m;
  20. public DrawArea DA;
  21. public static MyPanelRater DAR;
  22. public static MyPanel MyP;
  23.  
  24. private static Connection con;
  25. private static Console console = new Console();
  26. private static boolean aktive;
  27.  
  28.  
  29. /*
  30. * Client
  31. */
  32. public boolean clientConnection(String ip,int port) {
  33. aktive = true;
  34. try {
  35. ConnectToServer(ip, port);
  36. setupStreams();
  37. whileChatting();
  38. serversendMessage("connected "+m.UserName);
  39. } catch (Exception e) {
  40. return false;
  41. }
  42.  
  43. return true;
  44. }
  45.  
  46. private static Thread thread;
  47. private static Thread thread1;
  48. private static Thread thread2;
  49. private static Socket connenction;
  50. private static ObjectOutputStream output;
  51. private static ObjectInputStream input;
  52. private static Object message;
  53.  
  54.  
  55. private void ConnectToServer(String serverip,int Port) throws IOException {
  56. console.addTextConsole("Versuche verbindung zu "+serverip+":"+""+" verbinden!");
  57. connenction = new Socket(InetAddress.getByName(serverip), Port);
  58. console.addTextConsole("Verbunden zu: "+connenction.getInetAddress().getHostName());
  59. }
  60. private void setupStreams() throws IOException{
  61. console.addTextConsole("Baue Verbindungsbrücken auf");
  62. output = new ObjectOutputStream(connenction.getOutputStream());
  63. output.flush();
  64. input = new ObjectInputStream(connenction.getInputStream());
  65. }
  66.  
  67. private void whileChatting() throws IOException{
  68. console.addTextConsole("Verbunden");
  69. try {thread.interrupt();} catch (Exception e) {}
  70. thread=null;
  71. thread = new Thread(){
  72. public void run(){
  73. do{
  74. try {
  75. if(aktive==false){
  76. this.interrupt();
  77. }
  78.  
  79. message = (String)input.readObject();
  80.  
  81. try {
  82. String s = (String) message;
  83.  
  84. Scanner scanner = new Scanner(s);
  85. String next = scanner.next();
  86. if(s.equals("killconnection")){
  87. killConnection();
  88. this.interrupt();
  89. }else if(s.equals("connected")){
  90.  
  91. }else if(s.equals("clear")){
  92. DAR.clear();
  93. }else if(s.equals("endround")){
  94. killConnection();
  95. System.exit(0);
  96. }else if(s.equals("rollenswaper")){
  97.  
  98.  
  99. MyP.rollenswaper();
  100. MyR.rollenswaper();
  101.  
  102. }else if(s.equals("close")){
  103. try {MyP.rollenswaper();} catch (Exception e) {}
  104. try {MyR.rollenswaper();} catch (Exception e) {}
  105. }else if(next.equals("ratewort")){
  106. if(scanner.hasNext()){
  107. String st2 = scanner.next();
  108. if(scanner.hasNext()){
  109. String st3 = scanner.next();
  110. while(scanner.hasNext()){
  111. st3 = st3+" "+scanner.next();
  112. }
  113. try {MyP.addToLog(st2+": "+st3);} catch (Exception e) {}
  114. try {MyR.AddLogText(st2+": "+st3);} catch (Exception e) {}
  115. }
  116. }
  117. }else if(next.equals("points")){
  118.  
  119. if(scanner.hasNext()){
  120. int points = Integer.parseInt(scanner.next());
  121. try {MyP.setPoinsValue(points);} catch (Exception e) {}
  122. try {MyR.setPoinsValue(points);} catch (Exception e) {}
  123. }
  124.  
  125.  
  126. }else if(next.equals("start")){
  127. String st2 = scanner.next();
  128. if(st2.equals("rate")){
  129. if(MyP.isAktive()==false){
  130. String st3 = scanner.next();
  131. MyPanelRater rater = new MyPanelRater();
  132. rater.setword(st3);
  133. Main.frame.dispose();
  134. }
  135. }else if(st2.equals("male")){
  136. MyPanel male = new MyPanel();
  137. String random = randomword.getRandomWord();
  138. serversendMessage("start rate "+random);
  139. male.AddLogText(random);
  140.  
  141. }
  142. }else if(next.equals("erraten")){
  143.  
  144. }else{
  145. Scanner sc = new Scanner(s);
  146.  
  147. while(sc.hasNextLine()){
  148. String str = sc.nextLine();
  149. Scanner sca = new Scanner(str);
  150. ArrayList<Integer> ar2 = new ArrayList<>();
  151. while(sca.hasNext()){
  152. ar2.add(Integer.parseInt(sca.next()));
  153. }
  154. sca.close();
  155. all.add(ar2);
  156. //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();}
  157.  
  158. }
  159.  
  160. Thread t = new Thread(){
  161. public void run(){
  162. ArrayList<ArrayList<Integer>> alle= all;
  163. all=new ArrayList<>();
  164. for(int i = 0;i<alle.size();i++){
  165. ArrayList<Integer> ar2 = alle.get(i);
  166.  
  167. 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();*/}
  168. try {sleep(100/alle.size());} catch (Exception e) {}
  169. }
  170.  
  171. }
  172. };
  173. t.start();
  174.  
  175. sc.close();
  176. }
  177. scanner.close();
  178. } catch (Exception e) {
  179.  
  180. }
  181. } catch (Exception e) {
  182. if(e.getMessage().equals("Connection reset")){
  183. System.exit( 0 );
  184. }
  185. }
  186. }while(true);
  187. }
  188. };
  189. thread.start();
  190. }
  191.  
  192.  
  193. public boolean Hostcon(String Ip, int Port) {
  194. try {
  195. aktive = true;
  196. serverstartRunning(Port);
  197. } catch (IOException e) {
  198. // TODO Auto-generated catch block
  199. e.printStackTrace();
  200. }
  201. //on sucsess
  202. return true;
  203. }
  204. /*
  205. * Server
  206. */
  207. private boolean waitingforcon;
  208. public void stopWaitingforConnection(){
  209. waitingforcon=false;
  210. }
  211.  
  212.  
  213.  
  214. private static ServerSocket server;
  215. private static ObjectOutputStream serveroutput;
  216. private static ObjectInputStream serverinput;
  217. private static Socket serverconnection;
  218.  
  219. public static ArrayList<String> Usernames= new ArrayList<>();
  220. private static ArrayList<ObjectOutputStream> serveroutputStreams= new ArrayList<>();
  221. private static ArrayList<ObjectInputStream> serverinputStreams= new ArrayList<>();
  222.  
  223. private static ArrayList<Integer> points = new ArrayList<>();
  224.  
  225.  
  226. private boolean serverstartRunning(int port) throws IOException{
  227. points.clear();
  228. points.add(0);
  229. aktive=true;
  230. Malernumber =1;
  231. serverinputStreams.clear();
  232. serveroutputStreams.clear();
  233. waitingforcon = true;
  234. try {thread1.interrupt();} catch (Exception e) {}
  235. thread1=null;
  236. thread1 = new Thread(){
  237. public void run(){
  238. ordner=0;
  239. try {
  240. try {
  241. server = new ServerSocket(port,100);
  242. } catch (IOException e1) {}
  243. while(waitingforcon){
  244. try {
  245. if(aktive==false){
  246. this.interrupt();
  247. }
  248. serverwaitForConnection();
  249. serversetupStreams();
  250. serverinputStreams.add(serverinput);
  251. serveroutputStreams.add(serveroutput);
  252. points.add(0);
  253.  
  254. createServerWhileChattingThread();
  255.  
  256.  
  257. console.addTextConsole("Verbindung hergestellt");
  258.  
  259. this.interrupt();
  260. } catch (Exception e) {}
  261. }
  262. } catch (Exception e) {
  263.  
  264. console.addTextConsole("Der Server hat verbindung getrennt");
  265. this.interrupt();
  266. }finally{
  267. this.interrupt();
  268. }
  269. }
  270. };
  271. thread1.start();
  272. console.addTextConsole("Server gestartet!");
  273. return true;
  274.  
  275.  
  276. }
  277.  
  278.  
  279.  
  280.  
  281. private void serverwaitForConnection() throws IOException{
  282.  
  283. serverconnection = server.accept();
  284.  
  285.  
  286. }
  287. private void serversetupStreams() throws IOException{
  288. console.addTextConsole("Baue Verbindungsbrücken auf!");
  289. serveroutput = new ObjectOutputStream(serverconnection.getOutputStream());
  290. serveroutput.flush();
  291. serverinput = new ObjectInputStream(serverconnection.getInputStream());
  292.  
  293. }
  294. private static int ordner=0;
  295. private WaitforConnection wfc;
  296. private static ArrayList<ArrayList<Integer>> all = new ArrayList<ArrayList<Integer>>();
  297. private void onemoreCon(){
  298.  
  299. wfc.oneMoreConnection();
  300.  
  301.  
  302. }
  303. public static void serversendMessage(Object messagem){
  304. if(messagem==null){
  305. return;
  306. }
  307. if(serveroutputStreams.size()==0&&output==null){
  308. console.addTextConsole("Keine verbindung");
  309. }
  310. try {
  311. for(int i = 0;serveroutputStreams.size()>i;i++){
  312. try {} catch (Exception e) {}
  313. ObjectOutputStream os = serveroutputStreams.get(i);
  314. os.writeObject(messagem);
  315. os.flush();
  316. }
  317.  
  318. } catch (Exception e) {
  319. e.printStackTrace();
  320. console.addTextConsole("Verbindungs Error!");
  321. }
  322. try {
  323. if(output!=null){
  324. try {} catch (Exception e) {}
  325. if(output!=null){
  326. output.writeObject(messagem);
  327. output.flush();
  328. }
  329. }
  330. } catch (Exception e) {
  331. e.printStackTrace();
  332. console.addTextConsole("Verbindungs Error!");
  333. }
  334. }
  335. public static void serversendMessageToSingleClient(Object messagem,int ClientID){
  336. if(serveroutputStreams.size()==0&&output==null){
  337. console.addTextConsole("Keine verbindung");
  338. }
  339. try {
  340.  
  341. try {} catch (Exception e) {}
  342. ObjectOutputStream os = serveroutputStreams.get(ClientID);
  343. os.writeObject(messagem);
  344. os.flush();
  345.  
  346.  
  347. } catch (Exception e) {
  348. e.printStackTrace();
  349. console.addTextConsole("Verbindungs Error!");
  350. }
  351. }
  352.  
  353. public Connection getConnection() {
  354.  
  355. return con;
  356.  
  357. }
  358.  
  359. public static boolean killConnection(){
  360. String kill = "killconnection";
  361. message = (Object) kill;
  362. try {serversendMessage(message);} catch (Exception e) {}
  363. aktive = false;
  364. Malernumber = 1;
  365. ordner = 0;
  366. serverinputStreams.clear();
  367. serveroutputStreams.clear();
  368. console.addTextConsole("Alte Verbindung Geschlossen");
  369. try {
  370. for(int i = 0;i<aktiveThreads.size();i++){
  371. aktiveThreads.get(i).interrupt();
  372. }
  373. } catch (Exception e) {
  374. e.printStackTrace();
  375. }
  376. aktiveThreads.clear();
  377. try {thread.interrupt();} catch (Exception e) {}
  378. try {thread1.interrupt();} catch (Exception e) {}
  379. try {thread2.interrupt();} catch (Exception e) {}
  380. try {thread=null;} catch (Exception e) {}
  381. try {thread1=null;} catch (Exception e) {}
  382. try {thread2=null;} catch (Exception e) {}
  383. try {server.close();server = null;} catch (Exception e) {}
  384. try {serverconnection.close();serverconnection = null;} catch (Exception e) {}
  385. try {serverinput.close();serverinput=null;} catch (Exception e) {}
  386. try {serveroutput.close();serveroutput=null;} catch (Exception e) {}
  387. try {output.close();output=null;} catch (Exception e) {}
  388. try {input.close();input = null;} catch (Exception e) {}
  389. try {connenction.close();connenction=null;} catch (Exception e) {}
  390. try {message=null;} catch (Exception e) {}
  391.  
  392. return true;
  393. }
  394. public static ArrayList<ArrayList<Integer>> All;
  395.  
  396. private static MyPanelRater MyR;
  397. private static GetRandomWord randomword;
  398.  
  399. private static int erraten;
  400. private static int Malernumber;
  401.  
  402. public static void rollenswaper(String Name){
  403. erraten++;
  404.  
  405. if(!Name.equals("Server Server")){
  406. if(Name.equals(m.UserName)){
  407. if(erraten==1){
  408. points.set(0, points.get(0)+2);
  409. }else{
  410. points.set(0, points.get(0)+1);
  411. }
  412. }else{
  413. for(int i = 0;i<Usernames.size();i++){
  414. if(Usernames.get(i).equalsIgnoreCase(Name)){
  415. if(erraten==1){
  416. points.set(i+1, points.get(i+1)+2);
  417. }else{
  418. points.set(i+1, points.get(i+1)+1);
  419. }
  420. }
  421. }
  422. }
  423. if(erraten==1){
  424. if(Malernumber==1){
  425. points.set(0, points.get(0)+1);
  426. }else if(Malernumber==0){
  427. points.set(points.size()-1, points.get(points.size()-1)+1);
  428. }else{
  429. points.set(Malernumber-1, points.get(Malernumber-1)+1);
  430. }
  431. }
  432.  
  433. }
  434.  
  435. if(erraten==serverinputStreams.size()||erraten>serverinputStreams.size()){
  436. erraten=0;
  437. serversendMessage("close");
  438. try {MyP.rollenswaper();} catch (Exception e) {}
  439. try {MyR.rollenswaper();} catch (Exception e) {}
  440.  
  441. if(Malernumber==serverinputStreams.size()||Malernumber>serverinputStreams.size()){
  442. serversendMessageToSingleClient("start male", Malernumber-1);
  443. Malernumber = 0;
  444. }else if (Malernumber==0){
  445. if(Main.roundnuber>0){
  446. Main.roundnuber--;
  447. MyPanel mp = new MyPanel();
  448. String random = randomword.getRandomWord();
  449. con.serversendMessage("start rate "+random);
  450. mp.AddLogText(random);
  451. Malernumber++;
  452. }else{
  453. serversendMessage("endround");
  454. killConnection();
  455. System.exit(0);
  456. }
  457. }else{
  458.  
  459. serversendMessageToSingleClient("start male", Malernumber-1);
  460. Malernumber++;
  461. }
  462.  
  463.  
  464. }else{
  465. if(erraten==1){
  466. serversendMessage("ratewort "+Name+" hat es erraten!");
  467. try {MyP.addToLog(Name+": hat es erraten!");} catch (Exception e) {}
  468. try {MyR.AddLogText(Name+": hat es erraten!");} catch (Exception e) {}
  469. }else{
  470. serversendMessage("ratewort "+Name+" hat es erraten!");
  471. try {MyP.addToLog(Name+": hat es erraten!");} catch (Exception e) {}
  472. try {MyR.AddLogText(Name+": hat es erraten!");} catch (Exception e) {}
  473. }
  474. }
  475.  
  476.  
  477.  
  478. sendPoinsToall();
  479.  
  480.  
  481. }
  482.  
  483.  
  484. public static void sendPoinsToall() {
  485.  
  486. try {MyP.setPoinsValue(points.get(0));} catch (Exception e) {}
  487. try {MyR.setPoinsValue(points.get(0));} catch (Exception e) {}
  488.  
  489. for(int i = 0;i<serveroutputStreams.size();i++){
  490. serversendMessageToSingleClient("points "+points.get(i+1), i);
  491. }
  492.  
  493. }
  494. public static boolean isServer(){
  495. if(serverinputStreams.size()!=0){
  496. return true;
  497. }else{
  498. return false;
  499. }
  500. }
  501.  
  502. public static void forceNextRound(){
  503. erraten=serverinputStreams.size();
  504. rollenswaper("Server Server");
  505.  
  506. }
  507.  
  508. private static ArrayList<Thread> aktiveThreads = new ArrayList<>();
  509.  
  510. private void createServerWhileChattingThread(){
  511.  
  512. Thread thread0 = new Thread(){
  513. public void run(){
  514. ObjectInputStream input0=serverinputStreams.get(ordner);
  515. ordner++;
  516. do{
  517. try {
  518. if(aktive==false){
  519. this.interrupt();
  520. }
  521. Object message = null;
  522. message = input0.readObject();
  523.  
  524. try {
  525. Boolean respond = true;
  526. Boolean sendpoins = false;
  527. String s = (String) message;
  528.  
  529. Scanner scanner = new Scanner(s);
  530. String next = scanner.next();
  531. if(s.equals("killconnection")){
  532. killConnection();
  533. this.interrupt();
  534. }else if(s.equals("clear")){
  535. try {DAR.clear();} catch (Exception e) {}
  536.  
  537. }else if(next.equals("erraten")){
  538. respond=false;
  539. rollenswaper(scanner.next());
  540. }else if(next.equals("connected")){
  541. String username = scanner.next();
  542. Usernames.add(username);
  543. respond=false;
  544. onemoreCon();
  545. }else if(s.equals("rollenswaper")){
  546.  
  547. }else if(next.equals("ratewort")){
  548. if(scanner.hasNext()){
  549. String st2 = scanner.next();
  550. if(scanner.hasNext()){
  551. String st3 = scanner.next();
  552. while(scanner.hasNext()){
  553. st3 = st3+" "+scanner.next();
  554. }
  555. try {MyP.addToLog(st2+": "+st3);} catch (Exception e) {}
  556. try {MyR.AddLogText(st2+": "+st3);} catch (Exception e) {}
  557. }
  558. }
  559. }else if(next.equals("start")){
  560. String st2 = scanner.next();
  561. if(st2.equals("rate")){
  562. String st3 = scanner.next();
  563. MyPanelRater rater = new MyPanelRater();
  564. rater.setword(st3);
  565. }else if(st2.equals("male")){
  566.  
  567. }
  568. sendpoins = true;
  569. }else{
  570. Scanner sc = new Scanner(s);
  571.  
  572. while(sc.hasNextLine()){
  573. String str = sc.nextLine();
  574. Scanner sca = new Scanner(str);
  575. ArrayList<Integer> ar2 = new ArrayList<>();
  576. while(sca.hasNext()){
  577. ar2.add(Integer.parseInt(sca.next()));
  578. }
  579. sca.close();
  580. all.add(ar2);
  581.  
  582. }
  583. Thread t = new Thread(){
  584. public void run(){
  585. ArrayList<ArrayList<Integer>> alle= all;
  586. all=new ArrayList<>();
  587. for(int i = 0;i<alle.size();i++){
  588. ArrayList<Integer> ar2 = alle.get(i);
  589.  
  590. 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();*/}
  591. try {sleep(100/alle.size());} catch (Exception e) {}
  592. }
  593.  
  594. }
  595. };
  596. t.start();
  597. sc.close();
  598. }
  599. if(respond==true){
  600. serversendMessage(message);
  601. }
  602. if(sendpoins==true){
  603. sendPoinsToall();
  604. }
  605. scanner.close();
  606. } catch (Exception e) {
  607. }
  608. } catch (Exception e) {
  609. if(e.getMessage().equals("Connection reset")){
  610. System.exit( 0 );
  611. }
  612. }
  613. }while(true);
  614. }
  615. };
  616. thread0.start();
  617. aktiveThreads.add(thread0);
  618.  
  619. }
  620.  
  621.  
  622. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement