아마도 여러분은 Microsoft의 IE 브라우저와 같은 인터넷 응용 소프트웨어의 강력한 기능과 진보된 기술에 감동받았을 것입니다. 어쩌면 여러분은 아직 그렇게 복잡한 대규모 시스템을 개발할 능력이 없을 수도 있지만, 여기에서 기회를 얻을 수 있습니다. 실습은 Delphi의 Winsocket을 사용하여 TCP/ip 기반 애플리케이션을 작성하는 방법을 배우는 것입니다. 여러분이 이미 Delphi 개발 도구에 익숙하다고 가정합니다.
처음부터 원격 컴퓨터와 통신하기 위한 프로그램을 작성하려면 관련 네트워크 프로토콜, 시스템에 대한 기본 지식, 네트워크 소프트웨어 및 하드웨어 기술에 대한 포괄적인 지식과 숙달이 있어야 한다고 상상할 수 있습니다. 그것은 대부분의 사람들에게 쉬운 일이 아닙니다.
다행스럽게도 Delphi의 네트워크 구성 요소 라이브러리는 복잡한 구현 세부 사항을 캡슐화하는 네트워크 통신 구현을 위한 구성 요소를 제공합니다. ClientSocket 및 ServerSocket 구성 요소를 사용하면 자체 네트워크 통신 및 리소스 공유 프로그램을 쉽게 작성할 수 있습니다.
Delphi 4.0에서 Winsocket 프로그램을 작성하는 단계는 다음과 같습니다.
1) Winsocket 구성요소 속성 설정;
2) 원격 컴퓨터와 연결을 설정합니다.
3) 컴퓨터 간 데이터 전송
이 세 단계는 아래에 자세히 설명되어 있습니다.
하나. Winsocket 속성 설정
Delphi 4.0에서 Winsocket은 ClientSocket과 ServerSocket이라는 두 가지 구성 요소로 세분화됩니다. 이들은 각각 클라이언트 측 및 서버 측 구성 요소 역할을 합니다. 즉, ClientSocket 컴포넌트는 클라이언트 프로그램에서 사용되고, ServerSocket 컴포넌트는 서버 측에서 사용됩니다. 보조 응용 프로그램 코드와 결합된 이 두 구성 요소 간의 통신을 통해 간단한 통신 프로그램을 구현할 수 있습니다. 물론 클라이언트 프로그램에 ServerSocket을 도입하면 클라이언트 프로그램이 서버 역할을 하여 다른 클라이언트 프로그램의 요청에 응답할 수도 있습니다.
서버측 프로그램을 작성하는 경우 ServerSocket 구성 요소의 Port 속성을 설정해야 합니다. 이 매개변수를 설정하는 이유는 동일한 컴퓨터에서 여러 서버 프로그램이 실행 중일 수 있고 해당 프로그램이 원격 클라이언트 프로그램의 연결 요청을 지속적으로 수락할 수 있기 때문입니다. 이메일을 보내려고 하는데 시스템이 귀하의 요청을 다른 서버 프로그램에 연결하는 경우 이메일이 제대로 전송되지 않을 것입니다. 따라서 서버 프로그램에서는 ServerSocket 컴포넌트에 적합한 포트 번호 Port를 설정해야 합니다. FTP, HTTP 등과 같이 ServerSocket에서 제공하는 서비스 유형을 나타내는 서비스 속성을 설정할 수도 있습니다. 그런 다음 Active 속성을 True로 설정합니다.
클라이언트 프로그램을 작성하는 경우 ClientServer 구성 요소를 설정하는 데 필요한 추가 속성이 있습니다. 포트 속성은 서버측 포트 속성 값과 일치하도록 설정되어야 합니다. 또한 호스트 속성을 올바르게 설정해야 합니다. 이는 읽기 전용 속성이므로 디자인 타임에는 사용할 수 없습니다. 클라이언트 프로그램이 연결하려는 원격 서버의 호스트 이름을 나타냅니다. 원격 호스트의 IP 주소인 Address 속성을 설정할 수도 있습니다. 두 속성이 모두 설정되면 시스템은 Host 속성을 사용하며 Address 속성으로 설정된 IP 주소는 유효하지 않게 됩니다.
둘. 원격 컴퓨터에 대한 연결 설정
원격 컴퓨터 시스템 간에 데이터를 전송하려면 먼저 두 통신 호스트 간에 연결을 설정해야 합니다.
서버 측의 ServerSocket 구성 요소는 Open 메서드를 호출하여 Socket 연결을 초기화하는 동시에 Active 속성을 True로 설정하고 ServerSocket 구성 요소를 청취 모드로 설정하며 언제든지 연결 요청이 있는지 감지합니다.
서버가 클라이언트 프로그램의 연결 요청을 수락하면 OnAccept 이벤트가 트리거됩니다. 다음 코드는 연결을 수락한 후 서버 프로그램에서 수행해야 하는 작업입니다.
PRocedure Myform..ServerSocketAccept(Sender: TObject, 소켓: TCustomWinSocket);
시작하다
IsServer := 참;
끝;
클라이언트 프로그램에서 ClientSocket 컴포넌트는 Port, Host 등 필요한 속성을 설정한 후 Active 속성을 True로 설정하여 연결 요청을 합니다.
삼. 컴퓨터 간 데이터 전송
서버가 클라이언트의 연결 요청을 수락하면 클라이언트는 데이터를 보낼 수 있습니다. 이때 클라이언트와 서버 사이에는 Socket이 존재하며, 이 Socket을 통해 통신이 이루어진다. 따라서 Socket 속성은 매우 중요하며 몇 가지 간단한 메소드를 사용하여 데이터를 보내고 받을 수 있습니다.
클라이언트 측은 다음 형식을 사용합니다: ClientSocket1.socket.sendtext('보내고 싶은 문자열');
서버 측에서는 다음과 같은 형식을 취합니다. ServerSocket1.socket.recievetext(str: string); 이 함수는 수신된 문자열의 길이를 반환하고 해당 문자열을 변수 str에 저장합니다.
위의 내용은 데이터 전송의 가장 간단한 예입니다. 또한 Socket 속성에서 제공하는 다른 방법을 사용하여 복잡한 데이터 전송을 구현할 수도 있습니다.
Delphi 4.0에서 Winsocket 구성 요소를 사용하는 것은 매우 편리하지만 이를 사용하여 네트워크 응용 프로그램을 개발하는 데 능숙해지려면 도움말 파일과 샘플 프로그램을 주의 깊게 읽어야 합니다. 지속적인 학습에서 이 방법의 장점을 비교하고, 프로그래밍 기능을 익히고, NMPOP3, NMUDP, NMFTP 등과 같은 Delphi에서 제공되는 다른 네트워크 구성 요소의 프로그래밍 기술을 익히십시오. 그때쯤이면 단순히 다른 사람의 네트워크 응용 프로그램 소프트웨어를 가져와 설정하고 능숙하게 운영하는 것이 아니라 실제 네트워크 응용 프로그램 개발에 참여할 수 있는 능력을 갖추게 될 것입니다.