Advertisement
TrodelHD

Untitled

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