fork download
  1. // Main.java
  2. public class Main {
  3. public static void main(String[] args) {
  4. new Main();
  5. }
  6. public Main() {
  7. SocketManager sm = SocketManager.getInstance();
  8. sm.open();
  9. sm.close();
  10. }
  11. }
  12.  
  13. // l.java
  14. public class l {
  15. public static void og(Object... o) {
  16. StringBuilder sb = new StringBuilder("*");
  17. for (int i=0; i<o.length; i++) {
  18. sb.append(" ");
  19. sb.append(o[i]);
  20. }
  21. System.out.println(sb.toString());
  22. }
  23. }
  24.  
  25. // SocketManager.java
  26. import java.io.BufferedReader;
  27. import java.io.BufferedWriter;
  28. import java.io.IOException;
  29. import java.io.InputStream;
  30. import java.io.InputStreamReader;
  31. import java.io.OutputStreamWriter;
  32. import java.net.ServerSocket;
  33. import java.net.Socket;
  34. import java.net.SocketTimeoutException;
  35.  
  36. public class SocketManager {
  37. private static final SocketManager instance = new SocketManager();
  38. public static final SocketManager getInstance() {
  39. return instance;
  40. }
  41.  
  42. private ServerSocket ss = null;
  43. private InputStream is = null;
  44. private BufferedReader br = null;
  45. private BufferedWriter bw = null;
  46.  
  47. private SocketManager() {
  48. try {
  49. ss = new ServerSocket(4321);
  50. ss.setSoTimeout(5000);
  51. } catch (IOException e) {
  52. l.og("Error: 서버 소켓의 생성에 실패했습니다.");
  53. }
  54. }
  55.  
  56. public void open() {
  57. try {
  58. l.og("Wait Client...");
  59. Socket socket = ss.accept();
  60. l.og("Client connected: " + socket.getInetAddress().getHostAddress());
  61. String s;
  62.  
  63. is = socket.getInputStream();
  64. br = new BufferedReader(new InputStreamReader(is, "utf-8"));
  65. while ((s=br.readLine()) != null) {
  66. l.og(s);
  67. if (s.length() == 0) break;
  68. }
  69. byte[] buffer = new byte[16];
  70. for (int i=0; i<buffer.length; i++) {
  71. System.out.print(String.format("%02d ", i));
  72. }
  73. System.out.println("\tText");
  74. for (int i=0; i<buffer.length*3-1; i++) {
  75. System.out.print("=");
  76. }
  77. System.out.print(" \t");
  78. for (int i=0; i<buffer.length; i++) {
  79. System.out.print("=");
  80. }
  81. System.out.println();
  82.  
  83. // l.og("Data Thread start.");
  84. // DataThread dt = new DataThread();
  85. // dt.start();
  86.  
  87. int r;
  88. while ((r=is.read(buffer)) == buffer.length) {
  89. if (r < 0) break;
  90. for (int i=0; i<buffer.length; i++) {
  91. System.out.print(String.format("%02x ", buffer[i]));
  92. switch (buffer[i]) {
  93. case 0:
  94. case 10:
  95. case 13:
  96. buffer[i] = '.';
  97. break;
  98. }
  99. }
  100. System.out.println("\t" + new String(buffer, "utf-8"));
  101. }
  102. for (int i=0; i<buffer.length; i++) {
  103. System.out.print(String.format("%02x ", buffer[i]));
  104. switch (buffer[i]) {
  105. case 0:
  106. case 10:
  107. case 13:
  108. buffer[i] = '.';
  109. break;
  110. }
  111. }
  112. System.out.println("\t" + new String(buffer, "utf-8"));
  113.  
  114. bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "utf-8"));
  115. bw.write("HTTP/1.1 200 OK"); bw.newLine();
  116. bw.write("Content-Type: text/html; Charset: UTF-8"); bw.newLine();
  117. bw.newLine();
  118. bw.write("<!DOCTYPE html>"); bw.newLine();
  119. bw.write("<html>"); bw.newLine();
  120. bw.write("\t<head>"); bw.newLine();
  121. bw.write("\t\t<title>title</title>"); bw.newLine();
  122. bw.write("\t\t<style>"); bw.newLine();
  123. bw.write("\t\t\tbody {"); bw.newLine();
  124. bw.write("\t\t\t\tmargin: 0px;"); bw.newLine();
  125. bw.write("\t\t\t\tpadding: 0px;"); bw.newLine();
  126. bw.write("\t\t\t\tfont-family: Dotum;"); bw.newLine();
  127. bw.write("\t\t\t\tfont-size: 12px;"); bw.newLine();
  128. bw.write("\t\t\t}"); bw.newLine();
  129. bw.write("\t\t</style>"); bw.newLine();
  130. bw.write("\t\t<script>console.log(1);</script>"); bw.newLine();
  131. bw.write("\t</head>"); bw.newLine();
  132. bw.write("\t<body>"); bw.newLine();
  133. bw.write("\t\thello"); bw.newLine();
  134. bw.write("\t</body>"); bw.newLine();
  135. bw.write("</html>"); bw.newLine();
  136.  
  137. bw.close();
  138. br.close();
  139. socket.close();
  140. ss.close();
  141. } catch (SocketTimeoutException e) {
  142. l.og("Accept timeout.");
  143. } catch (IOException e) {
  144. e.printStackTrace();
  145. }
  146. }
  147. public void close() {
  148. if (bw != null) {
  149. try {
  150. bw.close();
  151. } catch (IOException e) {
  152. // TODO Auto-generated catch block
  153. e.printStackTrace();
  154. }
  155. }
  156. if (br != null) {
  157. try {
  158. br.close();
  159. } catch (IOException e) {
  160. // TODO Auto-generated catch block
  161. e.printStackTrace();
  162. }
  163. }
  164. if (ss != null && ss.isClosed() == false) {
  165. try {
  166. ss.close();
  167. } catch (IOException e) {
  168. // TODO Auto-generated catch block
  169. e.printStackTrace();
  170. }
  171. }
  172. }
  173. }
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty