start_server 를 start_servers 와 start_a_server 로 나누었음.
start_servers 에서는 select 가 소켓들을 감시하기 위한 코드
start_a_server 에서는 서버 소켓에서 버퍼를 받으며 request 와 response 를 하는 함수를 넣었음.
기타 사항
Socket::Accept 에 들어있던 int connection 파라미터를 int client 클래스 변수로 바꿨음. resolved #27
readfds 를 모든 클래스함수에서 접근할 수 있도록 클래스 변수로 바꿨음.
WHY?
start_server 가 서버 여러개를 돌리는 데, 그 이름에 걸맞지 않게 모든 server 를 제어하고 너무 코드수가 많기 때문에 start_servers 로 이름을 변경하고 코드를 나눌 필요가 있었음.
TESTING
make 로 수행해서 이전과 똑같이 8000, 8001, 8002 번이 잘 작동하는 지 확인한다. 특별히 기능을 추가한 것은 없다.
개선해야할 사항
request 와 response 로 클라이언트와 주고 받게 된다면 진정한 멀티플랙싱을 구현해야할 때가 올 것임. 지금은 클라이언트 소켓에서 request 를 받고 끝나지만, 클라이언트 소켓에서 request 를 주고 받는 것을 반복적으로 가능하게 하려면, readfds 에 클라이언트 소켓을 추가해야할 것이다. 그리고 클라이언트 소켓에서 연결이 끊어진 상태라면, readfds 에서 FD_CLR 을 사용하여 readfds 에서 클라이언트 소켓을 제거해야한다.
이렇게 수정할 사항들이 많아서 더 깔끔하게 Webserver 클래스 함수들을 정리할 수 있었지만, 하나의 함수에 서버의 사이클이 있는 게 나중에 수정하기가 편할 것같아서 일단 여기까지 두었음.
아직 공부가 충분하지 못해서 이 부분이 감이 안잡히는 데, 일단 request 와 response 에 대한 충분한 이해가 있어야 그림이 나올 것같아서 그것부터 공부를 해보겠음.
WHAT?
start_server
를start_servers
와start_a_server
로 나누었음.start_servers
에서는select
가 소켓들을 감시하기 위한 코드start_a_server
에서는 서버 소켓에서 버퍼를 받으며request
와response
를 하는 함수를 넣었음.기타 사항
Socket::Accept
에 들어있던int connection
파라미터를int client
클래스 변수로 바꿨음. resolved #27readfds
를 모든 클래스함수에서 접근할 수 있도록 클래스 변수로 바꿨음.WHY?
start_server
가 서버 여러개를 돌리는 데, 그 이름에 걸맞지 않게 모든server
를 제어하고 너무 코드수가 많기 때문에start_servers
로 이름을 변경하고 코드를 나눌 필요가 있었음.TESTING
make 로 수행해서 이전과 똑같이 8000, 8001, 8002 번이 잘 작동하는 지 확인한다. 특별히 기능을 추가한 것은 없다.
개선해야할 사항
request 와 response 로 클라이언트와 주고 받게 된다면 진정한 멀티플랙싱을 구현해야할 때가 올 것임. 지금은 클라이언트 소켓에서 request 를 받고 끝나지만, 클라이언트 소켓에서 request 를 주고 받는 것을 반복적으로 가능하게 하려면, readfds 에 클라이언트 소켓을 추가해야할 것이다. 그리고 클라이언트 소켓에서 연결이 끊어진 상태라면, readfds 에서 FD_CLR 을 사용하여 readfds 에서 클라이언트 소켓을 제거해야한다.
이렇게 수정할 사항들이 많아서 더 깔끔하게 Webserver 클래스 함수들을 정리할 수 있었지만, 하나의 함수에 서버의 사이클이 있는 게 나중에 수정하기가 편할 것같아서 일단 여기까지 두었음.
아직 공부가 충분하지 못해서 이 부분이 감이 안잡히는 데, 일단 request 와 response 에 대한 충분한 이해가 있어야 그림이 나올 것같아서 그것부터 공부를 해보겠음.