반응형

Iterative 에코 서버

 

 

먼저 Iterative 기반 에코 서버 코드를 봐보자.

 

accept 함수 부분이 어떻게 반복되는지 잘 보자.

 

-

 

echo_server.c
0.00MB

 

 

 

-

 

45 ~ 58 행 : 총 5개의 클라이언트에게 서비스를 제공하기 위한 반복문이다.

 

결과적으로 accept 함수가 총 5회 호출되어 

 

 5개의 클라이언트에게 순서대로 에코 서비스를 제공한다.

 

-

 

54 ~ 55 행 : 실제 에코 서비스가 이뤄지는 부분이다.

 

읽어 들인 문자열을 그대로 재전송한다.

 

-

 

57 행 : 소켓을 대상으로 close 함수가 호출되면

 

연결되어있던 상대방 소켓에게 EOF가 전달된다.

 

즉, 클라이언트 소켓 close 함수를 호출하면 

 

54 행의 조건은 '거짓(false)'이 되어서 57 행이 실행된다.

 

-

 

59 행 : 총 5개의 클라이언트에게 서비스를 제공하고 나면

 

마지막으로 서버 소켓을 종료하면서 프로그램을 종료한다.

 

-

 

※ echo server 실행결과 ※

 

-

 

 

-

 

위 사진의 실행결과에서 보이듯이 클라이언트와의 연결 정보가 출력되도록 예제가 작성되어 있다.

 

위 사진의 실행결과는 현재 3번 째 클라이언트와 연결된 상황을 보이고 있다.

 

이때 주의할 점은 쓰레드를 이용한 통신처럼 동시 서비스 제공이 아니라

 

1번째 클라이언트가 서비스를 종료하면

 

2번째 클라이언트가 서비스를 이용하고 

 

2번 째 클라이언트가 서비스를 종료하면

 

3번째 클라이언트가 서비스를 이용하는 

 

순차적 접속 방식이다.

 

즉, 이미 접속되어 있는 클라이언트와의 연결이 끊겨야 다른 클라이언트가 접속할 수 있다는 것이다.

 

서버 입장에서는 들어온 순서대로 연결 요청을 수락한다.

 

-

 

참고로

 

위의 코드는 이전에 봤던 코드와는 살짝 다른데

 

그 이유는 if문으로 오류 체크를 하고 있기 때문이다.

 

"이러한 형식으로 if문을 사용해 오류 체크를 하는구나"라고 익혀두면 된다.

반응형

+ Recent posts