class Server에서 Servermanager를 사용할 일이 있어서, 상호참조해야하는 문제가 있는데, 인터넷을 참고해서 해결하였음
Temp2
#define 만을 위한 헤더 만듦. 여기서 한번에 추가, 제거, 검색하면 좋다고 생각함
Connection 클래스에 keep_alive에 대응하는 시간차를 계산하는 isKeepConnection() 함수 만듬
새로운 요청이 들어왔을 때, 클라이언트 소켓을 만드는 함수가 hasNewConnection(), acceptNewConnection() 이다.
이번에는 함수가 들어왔을 때, keep_alive 시간을 넘어서 제거해주는, 마치 free 처럼 동적해제하는, 함수 두가지를 작성하였다.
int getUnuseConnectionFd();
void closeConnection(int client_fd);
TODO
server의 m_connections<int, Connection> 에서 관리하는 fd가 fd_set에 반영되서, m_max_fd 값에 반영되지 않고 있는데, while(1) 을 도는 중에 반영되도록 해야한다.
Temp3
TODO 문제는 해결하였다,
Define.hpp 를 만들어서 모든 define 값은 여기서 수정,삭제,검색을 한다.
ServerManager class 의 fd_set getter 함수 모두 만듬 (const return이면 안됨. 범용성이 떨어짐)
closeOldConnection() + isKeepConnetion() 으로 keep_alive를 기본적으로 구현함.
(전송이 시작되었을 때, 다시 갱신되는 것을 처리해야함 TODO!)
acceptNewConnection() 에서 FD_SET, std::map 에 잘 들어가도록함. 나중을 위하여 NONBLOCK 하는 fctnl도 넣어놨음.
다만 buffer 를 읽는 작업은 이 함수에서 분리되어 run 함수의 반복문 안에서 실행되야함
⚠️ 이슈 없이 Pull Request 금지
아래 항목은 필수이지만, 필요없다고 생각하는 부분은 삭제하고 필요한 부분은 자유롭게 추가 가능
TESTING
make re
postman으로 여러 포트로 POST GET을 날려본다.
바이트전송에 간격이 있는 경우(nc) 에 대해서는 잘 동작하지는 않는다.(하지만 터지진 않고 keep-alive 만큼만 살아있다.)
Temp
예제처럼 각각에 server의 이터레이터를 통해 run을 돌리도록 함
그러기위해서 class Connection의 기본적인 소스코드를 완성하였다.
class Server에서 Servermanager를 사용할 일이 있어서, 상호참조해야하는 문제가 있는데, 인터넷을 참고해서 해결하였음 Temp2
#define 만을 위한 헤더 만듦. 여기서 한번에 추가, 제거, 검색하면 좋다고 생각함
Connection 클래스에 keep_alive에 대응하는 시간차를 계산하는 isKeepConnection() 함수 만듬
새로운 요청이 들어왔을 때, 클라이언트 소켓을 만드는 함수가 hasNewConnection(), acceptNewConnection() 이다.
이번에는 함수가 들어왔을 때, keep_alive 시간을 넘어서 제거해주는, 마치 free 처럼 동적해제하는, 함수 두가지를 작성하였다.
TODO
Temp3
TESTING