서버 클라이언트 예제

서버 프로그램은 특정 포트에서 수신 대기할 새 ServerSocket 개체를 만드는 것으로 시작합니다(다음 코드 세그먼트의 굵게 된 명령문 참조). 이 서버를 실행할 때 다른 서비스에 전용이 아닌 포트를 선택합니다. 예를 들어 이 명령은 포트 4444에서 수신하도록 서버 프로그램 KnockKnockServer를 시작합니다. 클라이언트 응용 프로그램에는 클라이언트가 실행될 때 서버 응용 프로그램이 실행 중인 컴퓨터의 컴퓨터 또는 IP 주소 이름이 명령줄 매개 변수로 전달되도록 요구합니다. 클라이언트와 서버가 샘플 컴퓨터에서 실행되는 경우 클라이언트를 다음과 같이 시작할 수 있습니다. 그렇지 않으면 앞뒤로 전달하는 데이터는 의미가 없습니다. 자체 클라이언트와 서버가 사용하는 프로토콜은 전적으로 작업을 수행하는 데 필요한 통신에 따라 달라집니다. 구현 여기에서는 클라이언트/서버 모델을 보여 주기 위해 서버와 클라이언트 간에 하나의 hello 메시지를 교환합니다. 서버가 클라이언트가 다른 농담을 듣고 싶은지 묻는 메시지가 끝나고 클라이언트가 아니오라고 말하고 서버가 “안녕”이라고 말합니다. 은행 고객이 웹 브라우저(클라이언트)를 사용하여 온라인 뱅킹 서비스에 액세스하면 클라이언트가 은행의 웹 서버에 대한 요청을 시작합니다. 고객의 로그인 자격 증명은 데이터베이스에 저장될 수 있으며 웹 서버는 데이터베이스 서버에 클라이언트로 액세스합니다. 응용 프로그램 서버는 은행의 비즈니스 논리를 적용하여 반환된 데이터를 해석하고 웹 서버에 출력을 제공합니다.

마지막으로 웹 서버는 결과를 표시할 클라이언트 웹 브라우저에 반환합니다. 전제 조건 – TCP를 사용하여 클라이언트와 서버 간에 연결을 만드는 경우 C에서 선택, UDP 서버-클라이언트 구현을 사용하는 C/C++, TCP 및 UDP 서버의 소켓 프로그래밍은 TCP와 같은 기능이 거의 없으며 TCP가 필요한 응용 프로그램에 적합합니다. 신뢰성이 높고 전송 시간이 상대적으로 덜 중요합니다. 그것은 HTTP, HTTP, FTP, SMTP, 텔넷과 같은 다른 프로토콜에 의해 사용된다. TCP는 지정된 순서로 데이터 패킷을 다시 정렬합니다. 전송된 데이터가 그대로 유지되고 전송된 순서와 동일한 순서로 도착한다는 절대적인 보장이 있습니다. TCP는 흐름 제어를 수행하며 사용자 데이터를 보내기 전에 소켓 연결을 설정하기 위해 세 개의 패킷이 필요합니다. TCP는 안정성 및 정체 제어를 처리합니다. 또한 오류 검사 및 오류 복구를 수행합니다. 잘못된 패킷은 원본에서 대상으로 다시 전송됩니다. KnockKnockProtocol 클래스는 클라이언트와 서버가 통신하는 데 사용하는 프로토콜을 구현합니다.

이 클래스는 클라이언트와 서버가 대화의 위치를 추적하고 클라이언트의 문에 대한 서버의 응답을 제공합니다. KnockKnockProtocol 개체는 모든 농담의 텍스트를 포함 하 고 클라이언트 서버의 문에 적절 한 응답을 제공 하는 다는 것을 확인 합니다. 서버가 “노크! 노크!” 클라이언트-호스트와 서버 호스트는 클라이언트와 서버와 는 미묘하게 다른 의미를 갖습니다. 호스트는 네트워크에 연결된 모든 컴퓨터입니다. 서버와 클라이언트라는 단어는 컴퓨터 나 컴퓨터 프로그램을 참조할 수 있지만 서버 호스트와 사용자 호스트는 항상 컴퓨터를 참조합니다. 호스트는 다재다능한 다기능 컴퓨터입니다. 클라이언트와 서버는 호스트에서 실행되는 프로그램일 뿐입니다.