네트워크 관련 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 |
[참고]
70. TCP/IP 통신에서 송/수신 시 수신 측 이벤트에서 데이터 단편화(Fragmentation) 발생 원인과 해결 방법 송/수신 시 단편화가 발생하는 경우에 대한 설명입니다. |
5 |
[참고]
78. [C#]SmartTCPClient-Wrapping Class 를 이용한 TCPClient 프로그램 구현 방법 TCP Client 구현 시 예외 처리 및 프로토콜에 의한 송수신시 필요한 처리를 별도로 작성할 수 있도록 만들어진 Wrapping Class 사용 방법입니다. |
본 자료는
1. 네트워크 준비 지연
2. IEC-Series의 IP 할당 방식에 따른 네트워크 드라이버 마운팅 시간
3. 네트워크 통신 프로그램 시 에러를 방지할 수 있는 방법
4. 내부 네트워크 연결 상태 확인하기
순서로 진행합니다.
IEC-Series 제품 부팅 후 네트워크 드라이버 활성화 및 IP 할당 대기 시간에 따른 최초 LAN 연결까지의 소요 시간이 발생하므로 프로그램 시작 직후 LAN 통신 연결을 시도하는 경우 통신 연결 에러가 발생할 수 있습니다. TCP Socket 관련 기능을 사용하는 프로그램 개발 시 본 문서를 반드시 숙지하시기 바랍니다.

2. IEC-Series의 IP 할당 방식에 따른 네트워크 드라이버 마운팅 시간
IEC-Series 제품 부팅 시 네트워크 드라이버 마운팅 및 IP 할당 시간은 IEC-Series, IP 할당 방식 및 동작 모드가 Run 모드일 때, 로드하는 프로그램의 복잡도에 따라 약간의 차이가 있습니다. 아래 표를 참고하시기 바랍니다.
[표] IEC-Series 별 네트워크 드라이버 마운팅 시간(상단 그림의 "※" 표시된 영역의 시간)동작 모드 | Run | Run | ||||
---|---|---|---|---|---|---|
마운팅 시간 | 3초 | 10초 | ||||
주의 | 본 측정 시간은 O/S가 Standard인 경우 측정한 대략적인 수치이며, O/S 버전 및 사용 환경에 따라 변동될 수 있습니다. |
Series |
Series |
Series |
||||
---|---|---|---|---|---|---|
동작 모드 |
Run | Run | ||||
마운팅 시간 | 3초 | 10초 | ||||
주의 | 본 측정 시간은 O/S가 Standard인 경우 측정한 대략적인 수치이며, O/S 버전 및 사용 환경에 따라 변동될 수 있습니다. |
3. 네트워크 통신 프로그램 시 에러를 방지할 수 있는 방법
IEC-Series 제품 부팅 후 네트워크 드라이버의 마운팅 시간에 따른 통신 에러를 방지할 수 있는 방법은 여러가지가 있습니다. 이중 [CASE-1]의 경우 여러가지 요인에 의해 네트워크 드라이버가 마운팅되는 시간이 달라질 수 있으므로 권장하지 않으며, [CASE-2] 또는 [CASE-3] 방법중 하나를 적용하는걸 권장합니다. 특히 [CASE-3]은 네트워크 연결 최적화 관련 클래스를 사용하여 에러 방지와 최적화를 동시에 수행할 수 있으므로 적극 권장합니다.
CASE-1 | 네트워크 드라이버가 마운팅되는 시간만큼 임의로 딜레이 시키는 방법 |
---|---|
"1. IEC-Series 및 IP 할당 방식에 따른 네트워크 드라이버 마운팅 시간"의 표를 참고하거나, 직접 네트워크 드라이버 마운팅 시간을 체크하여 일정 시간 동안 프로그램 상에서 네트워크 통신을 하지 않도록 프로그램을 작성합니다. 단, 해당 방법은 O/S 버전, 네트워크 상태 등 여러가지 요인에 의해 네트워크 드라이버의 마운팅 시간이 달라질 수 있으므로 권장하지 않습니다. |
[권장] | |
---|---|
CASE-2 | 주기적인 Ping 통신을 통하여 네트워크가 활성화되었는지 확인하는 방법 |
네트워크 통신 전에 네트워크 장비(공유기, 라우터 등) 또는 서버의 IP 주소로 Ping 통신을 시도하여 성공 여부에 따라 네트워크 연결을 처리하도록 프로그램을 작성하면 발생할 수 있는 예외를 방지할 수 있습니다. 프로그램상에서 Ping 통신을 시도하려면 SmartConfigs 컴포넌트의 기능을 사용해 구현할 수 있으며, 하단 예제 코드를 확인하여 프로그램 작성에 참고하시기 바랍니다. |
[적극 권장] | |
---|---|
CASE-3 | 네트워크 통신이 가능한 상태일 때 발생하는 이벤트를 사용하여 네트워크가 활성화 되었을 때 데이터를 보내는 방법 |
데이터를 전송할 때 네트워크 연결 및 IP 할당까지 완료되어 정상적으로 통신이 가능할 때 발생하는 이벤트를 사용하면 에러를 방지할 수 있습니다. "TechNote 80. IEC-Series에서 최적화된 Network 연결 처리 방법"에서 제공하는 CNetworkDeviceManagement Class의 On_Completion 이벤트 기능을 사용하여 구현할 수 있으며 자세한 내용은 해당 TechNote를 참고 하시기 바랍니다. |
4. 내부 네트워크 연결 상태 확인하기
아래의 내용은 위의 CASE-2 "주기적인 Ping 통신을 통하여 네트워크가 활성화되었는지 확인하는 방법"을 적용 할 경우 입니다. CASE-3 을 적용할 경우에는 "TechNote. 80번 IEC-Series에서 최적화된 Network 연결 처리 방법"을 참고하시기 바랍니다.
내부 네트워크에 연결하기 위해서는 아래 STEP과 같은 과정이 필요합니다. 외부 네트워크도 결국 내부 네트워크에 연결된 이후 접근이 가능한 것으로, 내부 네트워크의 연결 상태가 네트워크의 연결 상태를 판단하는 가장 기초적인 방법입니다.
따라서 내부 네트워크 장비(공유기, 허브, 라우터, 스위치 등)와 Ping 테스트를 진행하여 연결 상태를 확인할 수 있어 네트워크의 가용 상태를 점검하실 수 있습니다.
- [STEP-1] 내부 네트워크 드라이버 로딩 과정
IEC-Series 부팅 시 내부의 네트워크 드라이버가 로딩되는 과정을 거칩니다.
- [STEP-2] 네트워크 장비(공유기, 허브, 라우터, 스위치 등)로부터 연결(DHCP IP 할당)
이후 네트워크 장비로부터 IP를 할당받습니다.
- [STEP-3] 내부 네트워크 연결 완료
IP를 할당받으면 내부 네트워크에 연결이 완료된 것으로, 만약 외부 네트워크로 접근이 발생할 경우 서버 연결 상태 확인처리를 추가하여 진행하시기 바랍니다.
[관련된 SmartTCPClient-Wrapping Class의 인터페이스]
IsNetworkAvailable : 공유기(허브)의 연결 상태를 체크합니다.
자세한 내용은 "Tech Note 78. [C#] SmartTCPClient-Wrapping Class를 이용한 TCPClient 프로그램 구현 방법"내용을 참고하시기 바랍니다.