자료 참고 안내 1. 본 자료실의 모든 자료 저작권은 ㈜에이치앤에스에 있습니다.

본 자료는 개발하시는데 참고자료 용도로 사용하실 수 있으며 저작권 표시 없이 복사,게재, 출판 하실 수 없습니다. 외부 게재 사용 시 반드시 출처 항목에 회사명과 사이트 주소를 반드시 명시해 주시기 바랍니다.
[표기 예] 출처 : ㈜에이치앤에스(www.hnsts.co.kr) 또는 ㈜HNS(www.hnsts.co.kr)

2. 제품 개발 시 내용과 예제 코드는 수정 및 검증작업을 직접 하셔야 하며 문제 발생에 대한 책임은 ㈜HNS사와 무관합니다.

본사는 자료를 최신내용으로 유지하기 위해 노력하고 있으며 제공되는 정보의 오류 및 내용이 정확하지 않을 경우 사전 공지 없이 업데이트 될 수 있습니다. 자료의 문제점 발견 시 본사로 문의주시면 검토하여 자료를 수정하도록 하겠습니다.

TCP 통신 환경에서 네트워크 장애 발생 상황에 대한 처리 방법
작성일 2026-03-04 수정일 2026-03-10 조회수 88
분류 SmartX Framework
적용
플랫폼
키워드 TCP통신, 네트워크 연결, 네트워크 장애
첨부파일 TechNote85_Example.zip

네트워크 관련 TechNote가 다양하게 있어, 상황에 따라 참고해야 할 순서와 간단한 설명을 나타내는 표입니다. 아래 표를 참고하여 상황에 맞게 TechNote의 참고 순서를 확인하시기 바랍니다.

CASE 1 : TCP Socket 프로그램을 적용하기 위한 노하우
순서 제목 및 설명
1 [필독] 75. [C#, VB.NET] 네트워크 연결 없이 Mobile Device Center를 이용한 네트워크 디버깅 시 주의사항
IEC-Series 장비의 네트워크 디버깅 시 장비간 연결에 따른 발생할 수 있는 문제와 해결 방법입니다.
2 [필독] 12. IEC-Series 제품 부팅 시 네트워크 드라이버 마운팅 시간에 따른 프로그램 작성 방법
IEC-Series 제품 부팅 후 네트워크 준비시 지연을 고려하여 프로그램에서 네트워크 연결 에러를 방지하는 방법입니다.
3 [필독] 80. [C#, VB.NET] IEC-Series에서 최적화된 Network 연결 처리 방법
IEC‑Series 장비에서 네트워크 연결과 MAC/IP 설정을 안정적으로 처리하기 위해 CNetworkDeviceManagement Class를 사용하는 방법입니다.
4 [필독] 85. TCP 통신 환경에서 네트워크 장애 발생 상황에 대한 처리 방법
네트워크 장애로 인해 실제 연결은 끊어졌지만, 정상적으로 연결된 것처럼 인식되는 문제에 대한 해결 방법입니다.
5 [참고] 70. TCP/IP 통신에서 송/수신 시 수신 측 이벤트에서 데이터 단편화(Fragmentation) 발생 원인과 해결 방법
송/수신 시 단편화가 발생하는 경우에 대한 설명입니다.
6 [참고] 78. [C#]SmartTCPClient-Wrapping Class 를 이용한 TCPClient 프로그램 구현 방법
TCP Client 구현 시 예외 처리 및 프로토콜에 의한 송수신시 필요한 처리를 별도로 작성할 수 있도록 만들어진 Wrapping Class 사용 방법입니다.

본 자료는
1. 네트워크 장애 발생 조건
2. 네트워크 장애로 인해 발생하는 문제점
3. 해결 방법
3-1. SmartTCPMultiServer의 ICMP 프로토콜 자동 지원 사용 방법
3-1-1. Server측 구현 방법(주요 코드 설명)
3-1-2. Client측 구현 방법(주요 코드 설명)
3-2. Server-Client간 연결 확인 Command 기반 프로토콜 구현 방법
3-2-1. Server측 구현 방법(주요 코드 설명)
3-2-2. Client측 구현 방법(주요 코드 설명)
4. 적용 예제
순서로 진행합니다.

1. 네트워크 장애 발생 조건

본 TechNote에서 정의하는 네트워크 장애란, Server가 정상 동작 중인 상태에서 Client 측 LAN 케이블이 강제로 분리되거나 공유기, 스위치, 허브 등의 네트워크 장비 이상으로 인해 네트워크 연결이 단절되는 상황을 의미합니다.

2. 네트워크 장애로 인해 발생하는 문제점

네트워크 장애로 인해 Client와 실제 통신이 되지 않는 경우에도, Server 측에서는 해당 Client가 여전히 연결된 상태로 인식되는 문제가 발생합니다.

예시
예시
3. 해결 방법

Server 측에서 연결된 Client의 상태를 주기적으로 확인하여 연결 상태를 감지하는 방식을 사용해야 됩니다.

  • [CASE-1] ICMP 프로토콜을 사용

    Server에서 연결된 Client로 Ping을 주기적으로 전송한 뒤 일정 시간 동안 응답이 없을 경우 해당 연결을 해제하는 방법입니다.
    이 방식은 SmartTCPMultiServer에 ClientConnected_AutoCheck 메서드로 이미 구현되어 있어 별도의 로직 구현 없이 간단히 사용할 수 있습니다.

  • [CASE-2] Command 기반 방식 사용

    Server에서 Client로 연결 확인용 Command를 전송하고 Client가 해당 Command를 다시 Server로 반환하도록 프로토콜을 구현하는 방법입니다. 일정 시간 내에 응답이 수신되지 않을 경우 연결이 끊어진 것으로 판단하여 해당 Client의 연결을 해제합니다.

아래 표를 참고하여 상황에 맞는 방식을 선택하시기 바랍니다.

[CASE-1] ICMP 프로토콜 [CASE-2] Command 기반 프로토콜
사용 환경 ICMP 프로토콜을 지원하는 장비 TCP를 사용하는 모든 장비
장점 SmartTCPMultiServer에 이미 구현되어 있어
별도의 구현 없이 연결 상태 확인 가능
ICMP를 지원하지 않는 환경에서도 사용 가능
단점 ICMP가 지원되지 않는 경우 사용이 불가능 Server 측과 Client 측 모두 각각 별도의 코드 구현이 필요

3-1. SmartTCPMultiServer의 ICMP 프로토콜 자동지원 사용 방법

해당 방법은 SmartTCPMultiServer에 내장 돼있는 ClientConnected_AutoCheck메서드를 사용하는 방법 입니다.

주의ClientConnected_AutoCheck메서드 사용시 주의사항
해당 메서드는 SmartX 5.0.0.15 버전부터 지원되며, ICMP 프로토콜(Ping)을 이용하여 연결 상태를 확인하는 방식으로, Client 장비가 ICMP 프로토콜을 지원하는 환경에서만 사용이 가능합니다.
참고Client 장비의 ICMP 프로토콜 지원 여부 확인 방법
  • [STEP-1] Server로 사용할IEC-Series와 Client 장비를 네트워크에 연결합니다.

    실제 환경에 따라 무선 LAN 또는 유선 LAN 연결 방식과 DHCP 또는 Static IP 설정을 적절히 선택하여 사용하시기 바랍니다.

    무선랜을 통해 IP할당받은 예시

    [무선 LAN을 통해 IP를 할당받은 예시]

  • [STEP-2] 내장치\Program Files 폴더 안에 있는 명령 프롬프트를 실행 합니다.
    명령프롬프트
  • [STEP-3] ICMP 프로토콜 지원 여부를 확인 하고자 하는 Client 디바이스 IP주소를 입력하여 Ping 명령을 테스트 합니다.
그림

[ICMP 프로토콜 사용가능]

Ping이 정상적으로 동작하는 경우 ICMP 프로토콜 사용이 가능합니다.

그림

[ICMP 프로토콜 사용 불가능]

Ping이 정상적으로 동작하지 않는 경우 아래와 같이 조치하시기 바랍니다.
1. Windows 계열 OS
방화벽에서 ICMP를 허용해야 하며, 자세한 설정 방법은 아래 “Windows 11 방화벽에서 ICMP 허용 설정 방법”을 참고하시기 바랍니다.
2. 그 외 장비
해당 제조사에 문의하여 ICMP 프로토콜 지원 여부를 확인이 필요합니다.
[ICMP를 지원하는 경우] : ICMP가 정상 동작하도록 설정합니다.
[ICMP를 지원하지 않는 경우] : 본 문서의 “3-2. Server-Client간 연결 확인 Command 기반 프로토콜 구현 방법” 을 참고하여 Command 기반 방식을 적용하시기 바랍니다.


참고윈도우 11 방화벽 ICMP 허용 방법
  • [STEP-1] 시작 검색창에 고급 보안이 포함된 Windows Defender 방화벽 검색 후 실행합니다.
    icmp허용방법
  • [STEP-2] 인바운드 규칙에서 “핵심 네트워킹 진단 - ICMP Echo Request (ICMPv4-In)” 규칙 사용을 눌러 ICMP를 허용합니다.
    icmp허용방법


3-1-1. Server 측 구현 방법(주요 코드 설명)
  • [STEP-1] SmartTCPMultiServer 통신 환경에 맞게 기본적인 속성을 설정합니다.

// 네트워크 연결 기능을 사용하기 위한 Class 생성
// 해당 내용은 TechNote.80 [C#, VB.NET] IEC-Series에서 최적화된 Network 연결 처리 방법”을 참고하시기 바랍니다.
private CNetworkDeviceManagement networkDeviceManagement = new CNetworkDeviceManagement();
private void Form1_Load(object sender, EventArgs e)
{

// Server 관련 정보 설정
// 최대 연결 Client 개수를 10개로 설정
smartTCPMultiServer1.MaxClient = 10;
// 한 번에 수신 가능한 데이터의 최대 크기 설정
smartTCPMultiServer1.MaxReceiveBufferSize = 1024;
// TCP Port 번호를 3377로 설정
smartTCPMultiServer1.Port = 3377;
// 데이터 수신 처리 방식을 동기 방식으로 설정
smartTCPMultiServer1.SendCallBackType = SmartX.SmartTCPMultiServer.CALLBACKTYPE.Sync;
// networkDeviceManagement 값 설정 코드 생략됨
}

  • [STEP-2] 서버 시작 시 Client 연결 상태 자동 점검 기능을 시작합니다.( ClientConnected_AutoCheck메서드 사용)

// IP 할당 성공 및 Server 연결 재시도 시 발생되는 이벤트
private void NetworkDeviceManagement_On_Completion(ref bool bServerConnect)
{

// 현재 SmartTCPMultiServer가 시작되지 않은 경우 시작
if (smartTCPMultiServer1.IsStart == false)
{
// smartTCPMultiServer를 시작
smartTCPMultiServer1.Start();
// Client연결 상태 자동 감지 시작
// 3000ms 주기로 연결된 Client에 Ping을 전송하고, 응답이 없을 경우 2회 재시도 후 연결을 해제한다.
smartTCPMultiServer1.ClientConnected_AutoCheckStart(3000, 2);
}
private void NetworkDeviceManagement_On_Failed(CNetworkDeviceManagement.FailStatus fStatus)
{
//코드 생략됨.
}

  • [STEP-3] 서버 종료 전 Client 연결 상태 자동 점검 기능을 중지합니다.

// 현재 SmartTCPMultiServer가 시작된 경우 중지
if (smartTCPMultiServer1.IsStart == true)
{

// Client연결 상태 자동 감지 중지
smartTCPMultiServer1.ClientConnected_AutoCheckStop();
// smartTCPMultiServer를 중지
smartTCPMultiServer1.Stop();
}



3-1-2. Client 측 구현 방법(주요 코드 설명)

Client 측에서는 Server와의 통신시 응답이 없는 경우, 이를 네트워크 장애로 판단하고 Server에 재연결을 시도하도록 구현해야 합니다.

  • [STEP-1] SmartTCPClient 통신 환경에 맞게 기본적인 속성을 설정합니다.

// 네트워크 연결 기능을 사용하기 위한 Class 생성
// 해당 내용은 TechNote.80 [C#, VB.NET] IEC-Series에서 최적화된 Network 연결 처리 방법”을 참고하시기 바랍니다.
private CNetworkDeviceManagement networkDeviceManagement = new CNetworkDeviceManagement();
private void Form1_Load(object sender, EventArgs e)
{

// 연결할 서버의 IP-Address를 설정
smartTCPClient1.ServerIPAddress = "192.168.1.5";
// 한 번에 수신 가능한 데이터의 최대 크기 설정
smartTCPClient1.MaxReceiveBufferSize = 1024;
// TCP Port 번호를 3377로 설정
smartTCPClient1.Port = 3377;
// 서버 데이터 수신에 따른 응답 시간을 1000ms로 설정
smartTCPClient1.ReceiveTimeout = 1000;
// 데이터 전송 시점에 Server로 Ping을 전송하여 네트워크 연결 상태 확인
smartTCPClient1.IcmpKeepAliveEnabled = true;
// Connected, Receive, Send의 처리 방식 설정(Connect : 동기, Receive : 비동기, Send : 동기)
smartTCPClient1.SetBlocking(SmartX.SmartTCPClient.CALLBACKTYPE.Sync, SmartX.SmartTCPClient.CALLBACKTYPE.Async, SmartX.SmartTCPClient.CALLBACKTYPE.Sync);
// networkDeviceManagement 값 설정 코드 생략됨
}

  • [STEP-2] SmartTCPClient 를 동기방식으로 시작합니다.

// IP 할당 성공 및 Server 연결 재시도 시 발생되는 이벤트
private void NetworkDeviceManagement_On_Completion(ref bool bServerConnect)
{

Connect_Blocking();
}
private void Connect_Blocking()
{
if (smartTCPClient1.IsConnect == false)
{
// 서버와의 연결을 시도하며, 최대 3초간 응답을 대기
if (smartTCPClient1.Connect(3000) == true)
{
labConnectStatus.Text = "서버 연결 성공";
}
}
}

  • [STEP-3] 송신 시 서버와 연결이 끊어진 경우 재연결 합니다.

private void Send_Blocking()
{

// 전송할 데이터
byte[] sendData = new byte[] {0x33, 0x45, 0x71, 0x52, 0x02};
// 서버로 데이터 전송
if (smartTCPClient1.SendByte(sendData) == false)
{
// 전송 실패 : 서버와 연결이 끊어진 경우 또는 연결되어 있지 않은 경우
// 서버와의 연결을 해제 후 재연결하도록 합니다.
smartTCPClient1.Close();
// 서버와 연결 재시도 [STEP-2] 코드를 참고하시기 바랍니다.
Connect_Blocking();
}
}



3-2. Server–Client 간 연결 확인 Command 기반 프로토콜 구현 방법

해당 방법은 SmartTCPMultiServer.ClientInfoList.Tag속성을 사용하여, Server에서 지속적으로 연결된 Client로 특정 Command를 주기적으로 전송하고, Client가 해당 Command를 그대로 Reply하도록 구성하여Server는 응답 수신 여부를 기준으로 Client의 연결 상태를 Tag 값으로 관리하는 방식입니다.

예시
예시

3-2-1. Server 측 구현 방법(주요 코드 설명)
  • [STEP-1] SmartTCPMultiServer 통신 환경에 맞게 기본적인 속성을 설정합니다.

// 네트워크 연결 기능을 사용하기 위한 Class 생성
// 해당 내용은 TechNote.80 [C#, VB.NET] IEC-Series에서 최적화된 Network 연결 처리 방법”을 참고하시기 바랍니다.
private CNetworkDeviceManagement networkDeviceManagement = new CNetworkDeviceManagement();
private void Form1_Load(object sender, EventArgs e)
{

// 최대 연결 Client 개수를 10개로 설정
smartTCPMultiServer1.MaxClient = 10;
// 한 번에 수신 가능한 데이터의 최대 크기 설정
smartTCPMultiServer1.MaxReceiveBufferSize = 1024;
// TCP Port 번호를 3377로 설정
smartTCPMultiServer1.Port = 3377;
// 데이터 수신 처리 방식을 동기 방식으로 설정
smartTCPMultiServer1.SendCallBackType = SmartX.SmartTCPMultiServer.CALLBACKTYPE.Sync;
// networkDeviceManagement 값 설정 코드 생략됨
}

  • [STEP-2] 서버 시작 시 Client 연결 상태 자동 점검 기능을 시작합니다.(SmartTimer 사용)

// IP 할당 성공 및 Server 연결 재시도 시 발생되는 이벤트
private void NetworkDeviceManagement_On_Completion(ref bool bServerConnect)
{

// 현재 SmartTCPMultiServer가 시작되지 않은 경우 시작
if (smartTCPMultiServer1.IsStart == false)
{
// smartTCPMultiServer를 시작
smartTCPMultiServer1.Start();
// 3000ms 주기로 연결된 Client에 Echo Command를 전송.
EchoCheckTimer.Interval = 3000;
// Client연결 상태 자동 감지 시작
EchoCheckTimer.Start();
}
}

  • [STEP-3] Server가 일정 주기마다 연결된 Client로 Echo 용 Command를 전송하고, Client로부터 Echo 응답 수신 여부를 기준으로 연결 상태를 판단하는 기능을 구현합니다.

// 수신된 데이터가 Echo 확인용 Command(Echo_Connect)인 경우,
// 해당 Client의 Echo 응답 수신 여부를 ClientInfoList.Tag 값에 기록합니다.
// Client로부터 데이터가 수신되었을 때 발생하는 이벤트
private void smartTCPMultiServer1_OnReceiveHandler(SmartX.SmartTCPMultiServer.CHandleClient.READINFO datas)
{

string strRecData = “”;
// 수신된 Byte데이터를 UniCode 문자열로 변환
strRecData = SmartX.SmartTCPMultiServer.ConvertUnicodeByteToString(datas.receiveDatas);
// 수신 데이터가 Echo 확인용 Command인 경우
if (strRecData == "Echo_Connect")
{
// 해당 Client의 Echo 응답 수신 상태를 Tag 값으로 기록
SetEchoCommandCheck(datas.strIPAddress, strRecData);
}
else
// Echo Command가 아닌 일반 데이터는 화면(ListBox)에 출력
lsbRecDatas.AddItem(strRecData);
}

// Echo Command 응답을 수신한 Client의 Tag 값을 갱신하는 메서드
private void SetEchoCommandCheck(string strIPAddress, string strTag)
{
//ClientInfoList 에 저장된 Client개수만큼 반복
for (int i = 0; i < smartTCPMultiServer1.ClientInfoList.Length; i++)
{
// 수신된 IP 주소와 일치하는 Client를 찾음
if (smartTCPMultiServer1.ClientInfoList[i].strIPAddress == strIPAddress)
{
// Echo 응답을 정상적으로 수신했음을 표시하기 위해 Tag 값 설정
smartTCPMultiServer1.ClientInfoList[i].Tag = strTag;
}
}
}

// 일정 주기마다 모든 연결된 Client를 대상으로 Echo 응답 여부를 점검합니다.
//이전 주기에서 Echo 응답이 없었던 Client는 네트워크 장애 또는 연결 끊김으로 판단하여 연결을 해제합니다.
//정상 Client에 대해서Tag 값을 초기화한 후 다시 Echo Command를 전송하여 다음 점검을 준비합니다.
private void EchoCheckTimer_Tick(object sender, EventArgs e)
{
// Timer 중복 실행 방지를 위해 중지
EchoCheckTimer.Stop();
// Server가 동작 중이며, 연결된 Client 목록이 존재하는 경우에만 처리
if (smartTCPMultiServer1.IsStart == true && smartTCPMultiServer1.ClientInfoList != null)
{
// ClientInfoList 에 저장된 Client개수만큼 반복
for (int i = 0; i < smartTCPMultiServer1.ClientInfoList.Length; i++)
{
// 이전 주기에서 Echo 응답이 없었던 경우
if (smartTCPMultiServer1.ClientInfoList[i].Tag == (object)"")
{
// 연결 해제
smartTCPMultiServer1.CloseClientIP(smartTCPMultiServer1.ClientInfoList[i].strIPAddress);
// Timer 재시작
EchoCheckTimer.Start();
return;
}
// Echo 응답 여부 확인을 위해 Tag 값 초기화
smartTCPMultiServer1.ClientInfoList[i].Tag = "";
// Client로 Echo 확인용 Command 전송
smartTCPMultiServer1.SendStringUnicodeIP(smartTCPMultiServer1.ClientInfoList[i].strIPAddress, " Echo_Connect");
}
}
// 모든 Client 확인 완료 후 Timer 재시작
EchoCheckTimer.Start();
}



3-2-2. Client 측 구현 방법(주요 코드 설명)

Client 측에서는 Server에서 일정 시간 Echo용 Command가 수신되지 않을 경우, 이를 네트워크 장애로 판단하고 Server에 재연결을 시도하도록 구현해야 합니다.

  • [STEP-1] SmartTCPClient 통신 환경에 맞게 기본적인 속성을 설정합니다.

// 네트워크 연결 기능을 사용하기 위한 Class 생성
// 해당 내용은 TechNote.80 [C#, VB.NET] IEC-Series에서 최적화된 Network 연결 처리 방법”을 참고하시기 바랍니다.
private CNetworkDeviceManagement networkDeviceManagement = new CNetworkDeviceManagement();
private void Form1_Load(object sender, EventArgs e)
{

// 연결할 서버의 IP-Address를 설정
smartTCPClient1.ServerIPAddress = "192.168.0.5";
// 한 번에 수신 가능한 데이터의 최대 크기 설정
smartTCPClient1.MaxReceiveBufferSize = 1024;
// TCP Port 번호를 3377로 설정
smartTCPClient1.Port = 3377;
// 서버 데이터 수신에 따른 응답 시간을 1000ms로 설정
smartTCPClient1.ReceiveTimeout = 1000;
// Connected, Receive, Send의 처리 방식 설정(Connect : 동기, Receive : 비동기, Send : 동기)
smartTCPClient1.SetBlocking(SmartX.SmartTCPClient.CALLBACKTYPE.Sync, SmartX.SmartTCPClient.CALLBACKTYPE.Async, SmartX.SmartTCPClient.CALLBACKTYPE.Sync);
// networkDeviceManagement 값 설정 코드 생략됨
}

  • [STEP-2] SmartTCPClient 를 동기방식으로 시작합니다. 이때 연결 상태 확인을 위한 Echo Command 수신 감지용 Timer를 시작합니다.

// IP 할당 성공 및 Server 연결 재시도 시 발생되는 이벤트
private void NetworkDeviceManagement_On_Completion(ref bool bServerConnect)
{

Connect_Blocking();
}
private void Connect_Blocking()
{
if (smartTCPClient1.IsConnect == false)
{
// 서버와의 연결을 시도하며, 최대 3초간 응답을 대기
if (smartTCPClient1.Connect(3000) == true)
{
// 연결 확인 주기 설정
EchoCheckTimer.Interval = 5000;
// Echo Command 수신 감지용 Timer 시작.
EchoCheckTimer.Start();
labConnectStatus.Text = "서버 연결 성공";
}
}
}

  • [STEP-3] Server로부터 Echo_Command 수신 여부를 기준으로 연결 상태를 판단하는 기능을 구현합니다.

// 데이터를 수신했을 때 발생하는 이벤트.
private void smartTCPClient1_OnReceiveHandler(byte[] datas)
{

string strRecvDatas = "";
// Unicode 형식의 수신 데이터를 문자열로 변환
strRecvDatas = SmartX.SmartTCPClient.ConvertUnicodeByteToString(datas);
// 수신 데이터가 Echo Command인 경우
if (strRecvDatas == "Echo_Connect")
{
// Echo Command를 Server로 다시 송신하여 연결 상태를 응답
smartTCPClient1.SendStringUnicode(strRecvDatas);
// Echo Command가 정상적으로 수신되었으므로
// 연결 상태 확인용 Timer의 Tick 시간을 초기화
EchoCheckTimer.Stop();
EchoCheckTimer.Start();
}
else
// Echo Command가 아닌 일반 데이터는 화면(ListBox)에 출력
lsbReceiveDatas.AddItem(strRecvDatas);
}
// Echo Command가 일정 시간 동안 수신되지 않았을 때 호출되는 Timer 이벤트
private void EchoCheckTimer_Tick(object sender, EventArgs e)
{
// Timer 중복 실행 방지를 위해 중지
EchoCheckTimer.Stop();
// 서버에서 일정 시간 동안 Echo Command가 수신되지 않았을 때
// 서버와의 연결을 해제 후 재 연결 하도록 합니다.
smartTCPClient1.Close();
// 서버와 연결 재시도 [Step-2] 코드를 참고하시기 바랍니다.
Connect_Blocking();
// Timer 재시작
EchoCheckTimer.Start();
}



4. 적용 예제 및 주요 코드

본 예제는 ICMP 프로토콜 방식과 Command 기반 프로토콜 방식을 각각 별도의 파일로 구분하여 구성하였으며, 해당 예제의 코드는 본문 상단에 첨부된 파일을 다운로드하여 확인해 주시기 바랍니다.

예제폴더
ICMP 방식 예제화면
  • [Server 예제화면]
  • [Client 예제화면]
Command 방식 예제화면
  • [Server 예제화면]
  • [Client 예제화면]


맨 위로
팝업닫기

(주)에이치앤에스('http://hnsts.co.kr/'이하 '(주)에이치앤에스 웹사이트')는 개인정보보호법에 따라 이용자의 개인정보 보호 및 권익을 보호하고 개인정보와 관련한 이용자의 고충을 원활하게 처리할 수 있도록 다음과 같은 처리방침을 두고 있습니다.

(주)에이치앤에스 웹사이트는 개인정보처리방침을 개정하는 경우 웹사이트 공지사항(또는 개별공지)을 통하여 공지할 것입니다.

○ 본 방침은 2011년 4월 1일부터 시행됩니다.

1. 개인정보의 처리 목적 (주)에이치앤에스 웹사이트는 개인정보를 다음의 목적을 위해 처리합니다. 처리한 개인정보는 다음의 목적 이외의 용도로는
사용되지 않으며 이용 목적이 변경될 시에는 사전동의를 구할 예정 입니다.
가. 민원사무 처리
민원인의 신원 확인, 민원사항 확인, 사실조사를 위한 연락 · 통지, 처리결과 통보 등을 목적으로 개인정보를 처리합니다.
2. 개인정보 파일 현황
1. 개인정보 파일명 : 고객의 소리
  • - 개인정보 항목 : 이메일, 휴대전화번호, 자택전화번호, 이름, 서비스 이용 기록, 접속 로그, 쿠키, 접속 IP 정보
  • - 수집방법 : 웹사이트
  • - 보유근거 : 이용자 동의
  • - 보유기간 : 3년
3. 개인정보의 제3자 제공에 관한 사항
① (주)에이치앤에스 웹사이트는 원칙적으로 이용자의 개인정보를 제1조에서 명시한 목적 범위 내에서 처리하며, 본래의 범위를 초과하여 처리하거나 제3자에게 제공하지 않습니다.
다만, 다음의 경우에는 개인정보를 제3자에게 제공할 수 있습니다.
  • – 이용자가 사전에 제3자 제공 및 공개에 동의한 경우
  • – 법령 등에 의해 제공이 요구되는 경우
  • – 서비스의 제공에 관한 계약의 이행을 위하여 필요한 개인정보로서 경제적/기술적인 사유로 통상의 동의를 받는 것이 현저히 곤란한 경우
  • – 개인을 식별하기에 특정할 수 없는 상태로 가공하여 이용하는 경우
4. 정보주체의 권리,의무 및 그 행사방법 이용자는 개인정보주체로서 다음과 같은 권리를 행사할 수 있습니다.
① 정보주체는 (주)에이치앤에스 웹사이트에 대해 언제든지 다음 각 호의 개인정보 보호 관련 권리를 행사할 수 있습니다.
  • 1. 개인정보 열람요구
  • 2. 오류 등이 있을 경우 정정 요구
  • 3. 삭제요구
  • 4. 처리정지 요구
② 제1항에 따른 권리 행사는 (주)에이치앤에스 웹사이트에 대해 개인정보 보호법 시행규칙 별지 제8호 서식에 따라 서면, 전자우편, 모사전송(FAX) 등을 통하여 하실 수 있으며 (주)에이치앤에스 웹사이트는
이에 대해 지체 없이 조치하겠습니다.
③ 정보주체가 개인정보의 오류 등에 대한 정정 또는 삭제를 요구한 경우에는 (주)에이치앤에스 웹사이트는 정정 또는 삭제를 완료할 때까지 당해 개인정보를 이용하거나 제공하지 않습니다.
④ 제1항에 따른 권리 행사는 정보주체의 법정대리인이나 위임을 받은 자 등 대리인을 통하여 하실 수 있습니다. 이 경우 개인정보 보호법 시행규칙 별지 제11호 서식에 따른 위임장을
제출하셔야 합니다.
5. 제3자에게의 개인정보 제공
① (주)에이치앤에스 웹사이트는 다음의 개인정보 항목을 처리하고 있습니다.
<민원사무 처리>
– 필수항목 : 이름, 휴대전화번호, 자택전화번호, 이메일, 서비스 이용 기록, 접속로그, 쿠키, 접속IP 정보
6. 개인정보의 파기
(주)에이치앤에스 웹사이트는 원칙적으로 개인정보 처리목적이 달성된 경우에는 지체없이 해당 개인정보를 파기합니다. 파기의 절차, 기한 및 방법은 다음과 같습니다.
  • –파기절차 이용자가 입력한 정보는 목적 달성 후 별도의 DB에 옮겨져(종이의 경우 별도의 서류) 내부 방침 및 기타 관련 법령에 따라 일정기간 저장된 후 혹은 즉시 파기됩니다. 이 때, DB로 옮겨진 개인정보는 법률에 의한 경우가 아니고서는 다른 목적으로 이용되지 않습니다.-파기기한이용자의 개인정보는 개인정보의 보유기간이 경과된 경우에는 보유기간의 종료일로부터 5일 이내에, 개인정보의 처리 목적 달성, 해당 서비스의 폐지, 사업의 종료 등 그 개인정보가 불필요하게 되었을 때에는 개인정보의 처리가 불필요한 것으로 인정되는 날로부터 5일 이내에 그 개인정보를 파기합니다.
  • –파기방법 전자적 파일 형태의 정보는 기록을 재생할 수 없는 기술적 방법을 사용합니다. 종이에 출력된 개인정보는 분쇄기로 분쇄하거나 소각을 통하여 파기합니다.
7. 개인정보의 안전성 확보 조치
(주)에이치앤에스 웹사이트는 개인정보보호법 제29조에 따라 다음과 같이 안전성 확보에 필요한 기술적/관리적 및 물리적 조치를 하고 있습니다.
1. 정기적인 자체 감사 실시
개인정보 취급 관련 안정성 확보를 위해 정기적(분기 1회)으로 자체 감사를 실시하고 있습니다.
2. 개인정보 취급 직원의 최소화 및 교육
개인정보를 취급하는 직원을 지정하고 담당자에 한정시켜 최소화 하여 개인정보를 관리하는 대책을 시행하고 있습니다.
3. 내부관리계획의 수립 및 시행
개인정보의 안전한 처리를 위하여 내부관리계획을 수립하고 시행하고 있습니다.
4. 해킹 등에 대비한 기술적 대책
(주)에이치앤에스 웹사이트는 해킹이나 컴퓨터 바이러스 등에 의한 개인정보 유출 및 훼손을 막기 위하여 보안프로그램을 설치하고 주기적인 갱신·점검을 하며 외부로부터 접근이 통제된 구역에
시스템을 설치하고 기술적/물리적으로 감시 및 차단하고 있습니다.
5. 개인정보의 암호화
이용자의 개인정보는 비밀번호는 암호화 되어 저장 및 관리되고 있어, 본인만이 알 수 있으며 중요한 데이터는 파일 및 전송 데이터를 암호화 하거나 파일 잠금 기능을 사용하는 등의
별도 보안기능을 사용하고 있습니다.
6. 접속기록의 보관 및 위변조 방지
개인정보처리시스템에 접속한 기록을 최소 6개월 이상 보관, 관리하고 있으며, 접속 기록이 위변조 및 도난, 분실되지 않도록 보안기능 사용하고 있습니다.
7. 개인정보에 대한 접근 제한
개인정보를 처리하는 데이터베이스시스템에 대한 접근권한의 부여,변경,말소를 통하여 개인정보에 대한 접근통제를 위하여 필요한 조치를 하고 있으며 침입차단시스템을 이용하여
외부로부터의 무단 접근을 통제하고 있습니다.
8. 문서보안을 위한 잠금장치 사용
개인정보가 포함된 서류, 보조저장매체 등을 잠금장치가 있는 안전한 장소에 보관하고 있습니다.
9. 비인가자에 대한 출입 통제
개인정보를 보관하고 있는 물리적 보관 장소를 별도로 두고 이에 대해 출입통제 절차를 수립, 운영하고 있습니다.
8. 개인정보 보호책임자 작성
① (주)에이치앤에스 웹사이트는 개인정보 처리에 관한 업무를 총괄해서 책임지고, 개인정보 처리와 관련한 정보주체의 불만처리 및 피해구제 등을 위하여 아래와 같이 개인정보 보호책임자를
지정하고 있습니다.
▶ 개인정보 보호책임자
성명 : 김진효
소속 : (주)에이치앤에스
전화번호 : 02-6402-8001
이메일 : hns@hnsts.co.kr
② 정보주체께서는 (주)에이치앤에스 웹사이트의 서비스(또는 사업)을 이용하시면서 발생한 모든 개인정보 보호 관련 문의, 불만처리, 피해구제 등에 관한 사항을 개인정보 보호책임자 및
담당부서로 문의하실 수 있습니다. (주)에이치앤에스 웹사이트는 정보주체의 문의에 대해 지체 없이 답변 및 처리해드릴 것입니다.
9. 개인정보침해 구제방법
정보주체는 개인정보침해로부터 구제받고자 하는 경우 다음과 같은 기관에 도움을 요청할 수 있습니다.
▶ 개인정보 침해신고센터 (한국인터넷진흥원 운영)
– 소관업무 : 개인정보 침해사실 신고, 상담 신청
– 홈페이지 : privacy.kisa.or.kr
– 전화 : (국번없이) 118
– 주소 : (138-950) 서울시 송파구 중대로 135 한국인터넷진흥원 개인정보침해신고센터
▶ 개인정보 분쟁조정위원회 (한국인터넷진흥원 운영)
– 홈페이지 : privacy.kisa.or.kr
– 전화 : (국번없이) 118
– 주소 : (138-950) 서울시 송파구 중대로 135 한국인터넷진흥원 개인정보침해신고센터
10. 개인정보 처리방침 변경
① 이 개인정보처리방침은 시행일로부터 적용되며, 법령 및 방침에 따른 변경내용의 추가, 삭제 및 정정이 있는 경우에는 변경사항의 시행 7일 전부터 공지사항을 통하여 고지할
것입니다.
팝업닫기

본 웹사이트에 게시된 이메일 주소가 전자우편 수집 프로그램이나 그 밖의 기술적 장치를 이용하여 무단으로 수집되는 것을 거부하며, 이를 위반시 정보통신망법에 의해 형사처벌됨을 유념하시기 바랍니다.

게시일 : 2011.4.1