@Override
	public void run() {
		while (true) {
			try {
				socket = serverSocket.accept();
				System.out.println(socket.getInetAddress() + ":" + socket.getPort() + "웹으로부터 연결요청이 들어왔습니다.");
				dis = new DataInputStream(socket.getInputStream());
				dos = new DataOutputStream(socket.getOutputStream());

				dcVO.setDcId(0);
				dcVO.setInetAddress(socket.getInetAddress());
				dcVO.setPort(socket.getPort());
				dcVO.setDis(dis);
				dcVO.setDos(dos);

				// key:0 Web DataOutputStream
				TcpIpServer.dcMap.put(dcVO.getDcId(), dcVO);
				
				// dis.read()이 3초간 응답없으면 SocketTimeoutException
				socket.setSoTimeout(3000);

				byte[] buffer = new byte[1024];
				byte[] result = null;
				int leftBufferSize = 0;
				leftBufferSize = dis.read(buffer, 0, buffer.length);
				result = new byte[leftBufferSize];
				for (int i = 0; i < result.length; i++) {
					result[i] = buffer[i];
				}

				switch ((char) result[0]) {
				case 'A':
					reserveControl(result); // 예약제어
					break;
				default:
					break;
				}
			} catch (SocketTimeoutException e) {
				e.printStackTrace();
				try {
					socket.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			} catch (IOException e) {
				e.printStackTrace();
				try {
					socket.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			} catch (Exception e) {
				e.printStackTrace();
				try {
					socket.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		}
	}