이번 프로젝트에는 상단 하고 인터페이스가 있어 인터페이스 회의에 갔다.
어떤 방식으로 인터페이스를 하는지에 대한 답변이 TCP 소켓통신이라는 이야기를 듣고
256자리를 텍스트를 받아서 DB에 넣는 프로그램을 만들었는데
IdTCPClient 컴포넌트를 가지고 작업을 하게 되었다.
약속한 테스트 당일날 처음으로 TCP 접속 테스트를 진행하는데 접속이 안되었다.
처음에 네트워크 문제인가 하고 넘어갔는데 계속 접속이 되지 않았다.
접속은 되지않고 시간은 가고 idTCPClient 가 아닌 기본 TCPClient 소켓을 사용해도
접속이 안되고 아이피, 포트, 방화벽 등 설정값을 바꿔서 접속을 해봤는데
결국 접속이 안되었다.
접속이 계속 안되서 좌절하다가 인터넷에서 AsyncPro 소켓 컴포넌트를 받아서
한번 접속해 봣는데 접속이 한번에 성공했다. 이게 무슨 조화인지 하고
한참을 고민하다가 시간이 없어 AsyncPro 소켓 컴포넌트를 가지고 개발을 시작하였다.
어차피 상용컴포넌트가 아니기 때문에 사용해도 별 문제가 없을꺼 같았다.
한참 개발이 완료될쯤 한 프로그램에서 두개의 소켓 을 열고 각각 다른 IP로
접속이 된것처럼 해달라는 요청을 받았다.
A, B 소켓을 만들고 A 는 서버에 접속하면서 로컬 IP를 1번으로
B는 서버에 접속하면서 로컬 IP를 2번으로 인식될수 있도록
해야 서버 프로그램이 두개의 소켓을 별로도 구분할수 있다고 한다.
idTCPClient 컴포넌트를 사용하면 BoundIP라는 프로퍼티를 사용하면
서버에 지정한 아이피를 로컬 IP로 인식시킬수 있다.
근데 AsyncPro 는 BoundIP 라는 기능을 어떻게 세팅하는 지 잘 모르겠어서
다시 원점으로 돌아가기로 했다.
idTCPClient는 왜 접속이 안될까하는 생각으로 AsyncPro 와 idTCPClient
프로퍼티를 비교해 보기로했다. 근데 AsyncPro 프로퍼티에 wsTelnet
란이 True로 설정되어 있는것을 확인했다.
그래서 바로 idTelnet 컴포넌트를 이용하여 접속도 성공하고
BoundIP 프로퍼티에 저장된 IP가 로컬IP로 인식되는것을 확인하였다.
결국 여러 소켓 컴포넌트를 사용해 봤지만 현재는 idTelnet컴포넌트를 이용하여
프로그램 개발을 완료하였다.