You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Transmitter.java 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package model;
  7. import java.io.BufferedReader;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. import java.io.InputStreamReader;
  11. import java.io.OutputStream;
  12. import java.io.OutputStreamWriter;
  13. import java.io.PrintWriter;
  14. import java.net.ServerSocket;
  15. import java.net.Socket;
  16. import java.util.Observable;
  17. import java.util.logging.Level;
  18. import java.util.logging.Logger;
  19. import logger.OhmLogger;
  20. /**
  21. *
  22. * @author Apollo
  23. */
  24. public class Transmitter extends Observable implements Runnable
  25. {
  26. private static final Logger lg = OhmLogger.getLogger();
  27. private static final int PORT = 35000;
  28. private String IP_ADRESSE = "";
  29. int modus;
  30. private String nachricht;
  31. String message;
  32. OutputStream oStream;
  33. InputStream iStream;
  34. InputStreamReader isr;
  35. OutputStreamWriter osr;
  36. BufferedReader in;
  37. PrintWriter out;
  38. Socket s;
  39. public Transmitter(int modus)
  40. {
  41. this.modus = modus;
  42. nachricht = "";
  43. }
  44. @Override
  45. public void run()
  46. {
  47. if (modus == 0)
  48. {
  49. ServerSocket sSocket;
  50. try
  51. {
  52. sSocket = new ServerSocket(PORT);
  53. lg.info("Server: Warte auf Verbindung ...");
  54. nachricht = "Server: Warte auf Verbindung ...";
  55. setChanged();
  56. notifyObservers();
  57. s = sSocket.accept(); // Achtung: blockiert!
  58. nachricht = "Verbunden mit Client";
  59. setChanged();
  60. notifyObservers();
  61. lg.info("Server: Verbindung akzeptiert");
  62. }
  63. catch (IOException ex)
  64. {
  65. Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex);
  66. }
  67. }
  68. else if (modus == 1)
  69. {
  70. nachricht = "Verbinden mit "+ IP_ADRESSE;
  71. setChanged();
  72. notifyObservers();
  73. lg.info("Client: verbinde ...");
  74. try
  75. {
  76. s = new Socket(IP_ADRESSE, PORT); // Achtung: blockiert!
  77. lg.info("Client: Verbindung hergestellt");
  78. }
  79. catch (IOException ex)
  80. {
  81. Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex);
  82. }
  83. }
  84. try
  85. {
  86. iStream = s.getInputStream();
  87. oStream = s.getOutputStream();
  88. isr = new InputStreamReader(iStream, "UTF-8");
  89. osr = new OutputStreamWriter(oStream, "UTF-8");
  90. in = new BufferedReader(isr);
  91. //BufferedWriter out = new BufferedWriter(osr);
  92. out = new PrintWriter(osr);
  93. }
  94. catch (IOException ex)
  95. {
  96. Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex);
  97. }
  98. if (modus == 0)
  99. {
  100. lg.info("Server: Stream initialisiert");
  101. }
  102. else if (modus == 1)
  103. {
  104. lg.info("Client: Stream initialisiert");
  105. }
  106. while (true)
  107. {
  108. try
  109. {
  110. nachricht = in.readLine(); // Achtung blockiert
  111. }
  112. catch (IOException ex)
  113. {
  114. Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex);
  115. }
  116. setChanged();
  117. notifyObservers();
  118. lg.info("Server: Nachricht empfangen");
  119. out.flush(); // wirklich absenden!!
  120. if (nachricht.equals("beenden"))
  121. {
  122. break;
  123. }
  124. }
  125. try
  126. {
  127. in.close();
  128. out.close();
  129. }
  130. catch (IOException ex)
  131. {
  132. Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex);
  133. }
  134. }
  135. public void send(String input)
  136. {
  137. out.println(input);
  138. out.flush(); // wirklich absenden!!
  139. }
  140. /**
  141. * @return the nachricht
  142. */
  143. public String getNachricht()
  144. {
  145. System.out.println("Server: NACHRICHT EMPFANGEN - " + nachricht);
  146. return nachricht;
  147. }
  148. /**
  149. * @param IP_ADRESSE the IP_ADRESSE to set
  150. */
  151. public void setIP_ADRESSE(String IP_ADRESSE)
  152. {
  153. this.IP_ADRESSE = IP_ADRESSE;
  154. }
  155. }