RecieveiMapMultiSocket.java 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package com.icontrols.kakao.socket.wallpad;
  2. import java.io.IOException;
  3. import java.net.InetAddress;
  4. import java.net.ServerSocket;
  5. import java.net.Socket;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. import com.icontrols.kakao.common.SERVERINFO;
  9. import com.icontrols.kakao.common.utils.CommonUtil;
  10. public class RecieveiMapMultiSocket {
  11. private static final Logger logger = LoggerFactory.getLogger(RecieveiMapMultiSocket.class);
  12. private static boolean bNewDanjiServer = true;
  13. public RecieveiMapMultiSocket() {
  14. boolean bDevVersion = CommonUtil.getDevServer();
  15. logger.info("checkFile.exists() : ", bDevVersion);
  16. bNewDanjiServer = CommonUtil.getUpdateNoticeNewDanjiServer();
  17. logger.info("getUpdateNoticeNewDanjiServer checkFile.exists() : " + bNewDanjiServer);
  18. SERVERINFO.GasCount_HardCoding_One = CommonUtil.isGasOnlyOne();
  19. logger.info("Gas Hard Coding checkFile.exists() : " + SERVERINFO.GasCount_HardCoding_One);
  20. logger.info("****************************************");
  21. logger.info("Thread를 이용한 다중 접속 서버 작동됨...단지서버2.0 : " + bNewDanjiServer + " , 개발서버 : " + bDevVersion + " , 가스 1개 고정 : " + SERVERINFO.GasCount_HardCoding_One);
  22. logger.info("연동 IP :" + SERVERINFO.SendKakaoEventURL + " , Port : " + SERVERINFO.SendEventPort);
  23. logger.info("월패드 수신 포트 :" + SERVERINFO.WalladReceivePort);
  24. logger.info("****************************************");
  25. ServerSocket server = null;
  26. long connectCount = 0;
  27. try {
  28. server = new ServerSocket(SERVERINFO.WalladReceivePort);
  29. while (true) {
  30. logger.debug("클라이언트가 접속해 오기를 기다리고 있습니다....");
  31. logger.debug("[Waiting....");
  32. Socket connectedClientSocket = server.accept();
  33. InetAddress ia = connectedClientSocket.getInetAddress(); // 접속에 사용된 서버측 Address
  34. int port = connectedClientSocket.getLocalPort(); // 접속에 사용된 서버측 PORT
  35. String ip = ia.getHostAddress(); // 접속된 원격 Client IP
  36. connectCount += 1; // 접속자수 카운트 증가
  37. logger.debug(" Connect Count : "+ connectCount + " , 접속-Local Port: " + port + " , Client IP: " + ip);
  38. if (connectCount > 2000000000) connectCount = 0; // [질문]- 아직 초기화 하는 이유를 모르겠슴돠.. int의 MAX_VALUE에 근접해서 인가요? ? ? ? ? .황.
  39. // [답변]-
  40. // -------------------------------------------
  41. // 스레드 관련 부분
  42. // -------------------------------------------
  43. // Handler 클래스로 client 소켓 전송
  44. ThreadServerHandler handler = new ThreadServerHandler(connectedClientSocket, bNewDanjiServer);
  45. // 스레드 시작, run()호출
  46. handler.start(); // start() --> run() 호출
  47. // -------------------------------------------
  48. }
  49. } catch (IOException ioe) {
  50. logger.error("Exception generated...", ioe.getMessage());
  51. System.err.println(ioe.getStackTrace());
  52. } finally {
  53. try {
  54. server.close();
  55. } catch (IOException ignored) {
  56. }
  57. }
  58. }
  59. public static boolean isNewDanjiServer() {
  60. return bNewDanjiServer;
  61. }
  62. }