1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- 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;
- }
- }
|