package com.icontrols.kakao.socket.wallpad; import java.io.IOException; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.icontrols.kakao.common.SERVERINFO; import com.icontrols.kakao.common.utils.CommonUtil; public class RecieveiMapMultiSocket { private static final Logger logger = LoggerFactory.getLogger(RecieveiMapMultiSocket.class); private static boolean bNewDanjiServer = true; public RecieveiMapMultiSocket() { boolean bDevVersion = CommonUtil.getDevServer(); logger.info("checkFile.exists() : ", bDevVersion); bNewDanjiServer = CommonUtil.getUpdateNoticeNewDanjiServer(); logger.info("getUpdateNoticeNewDanjiServer checkFile.exists() : " + bNewDanjiServer); SERVERINFO.GasCount_HardCoding_One = CommonUtil.isGasOnlyOne(); logger.info("Gas Hard Coding checkFile.exists() : " + SERVERINFO.GasCount_HardCoding_One); logger.info("****************************************"); logger.info("Thread를 이용한 다중 접속 서버 작동됨...단지서버2.0 : " + bNewDanjiServer + " , 개발서버 : " + bDevVersion + " , 가스 1개 고정 : " + SERVERINFO.GasCount_HardCoding_One); logger.info("연동 IP :" + SERVERINFO.SendKakaoEventURL + " , Port : " + SERVERINFO.SendEventPort); logger.info("월패드 수신 포트 :" + SERVERINFO.WalladReceivePort); logger.info("****************************************"); ServerSocket server = null; long connectCount = 0; try { server = new ServerSocket(SERVERINFO.WalladReceivePort); while (true) { logger.debug("클라이언트가 접속해 오기를 기다리고 있습니다...."); logger.debug("[Waiting...."); Socket connectedClientSocket = server.accept(); InetAddress ia = connectedClientSocket.getInetAddress(); // 접속에 사용된 서버측 Address int port = connectedClientSocket.getLocalPort(); // 접속에 사용된 서버측 PORT String ip = ia.getHostAddress(); // 접속된 원격 Client IP connectCount += 1; // 접속자수 카운트 증가 logger.debug(" Connect Count : "+ connectCount + " , 접속-Local Port: " + port + " , Client IP: " + ip); if (connectCount > 2000000000) connectCount = 0; // [질문]- 아직 초기화 하는 이유를 모르겠슴돠.. int의 MAX_VALUE에 근접해서 인가요? ? ? ? ? .황. // [답변]- // ------------------------------------------- // 스레드 관련 부분 // ------------------------------------------- // Handler 클래스로 client 소켓 전송 ThreadServerHandler handler = new ThreadServerHandler(connectedClientSocket, bNewDanjiServer); // 스레드 시작, run()호출 handler.start(); // start() --> run() 호출 // ------------------------------------------- } } catch (IOException ioe) { logger.error("Exception generated...", ioe.getMessage()); System.err.println(ioe.getStackTrace()); } finally { try { server.close(); } catch (IOException ignored) { } } } public static boolean isNewDanjiServer() { return bNewDanjiServer; } }