728x90
반응형
Iterative 서버/클라이언트
Concurrent(동시) : 흔히 아는 게임 서버와 파링 서버 같은 서버 프로그램은 동시에 여러 클라이언트에게 서비스를 제공하는 이런 모델
Iterative(반복) : Concurrent 모델처럼 동시에 여러 클라이언트를 처리하지는 못하지만 순차적으로 여러 클라이언트에게 서비스를 제공할 수 있는 서버 모델
<Iterative서버 모델의 순서>
socket() : 소켓 생성 bind() : 소켓에 주소 할당 listen() : 연결 요청 대기 상태 accpet() : 연결 요청 수락 send() & recv() : 데이터 송수신 close(client) : 클라이언트 종료 close(server) : 서버 완전히 종료 |
→ accept에서 close까지를 한 단위로 서비스하는 모델이다. 먼저 접속을 시도한 클라이언트부터 서비스를 제공한 후 그 클라이언트의 모든 작업이 종료되어 연결이 종료되면 다음 클라이언트에게 서비스를 제공하는 순서로 서버 프로그램은 진행된다.
#pragma comment(lib, “ws2.lib”) //winsock사용을 위한 라이브러리 추가
#include <winsock2.h> //헤더 파일 추가
서버 프로그램
- 클라이언트로부터 문자열을 전송받은 후에 전송받은 내용을 화면에 출력한다.
- 클라이언트로부터 연결 종료 요청을 받으면 연결을 종료하고 다음 클라이언트를 기다린다.
클라이언트 프로그램
- 시작 인자로 서버의 IP주소와 포트 번호를 입력받는다.
- 사용자에게 입력 받은 문자열을 서버 프로그램으로 전송한다.
- 서버의 응답을 화면에 출력한다.
- 사용자에게 END문자열을 입력 받으면 그 문자열 전송을 마지막으로 소켓을 종료한다.
- END문자열 전송 이후 프로그램을 종료한다.
728x90
반응형