- 서버에서 accept() 함수는 blocking 함수이다. 즉, 이 함수에선 접속자가 나타날 때까지 함수에서 결과값을 리턴하지 않고 기다린다. (유휴 시간)
그렇기 때문에 두 개 이상의 소켓을 동시에 사용하는 멀티유지 서버로 사용하기엔 어려움
=> 이를 해결하기 위해 스레드를 이용한 서버를 구축!
지금 만드는 서버는 이전보다 상용화에 더 가깝다. 서버는 동시에 여러 유저의 접속이 가능하며 유저와의 통신이 끝나도 실행이 종료되지 않고 다음 유저를 기다린다.
result : 결과를 리턴 받을 포인터
정상 종료 시, result에는 addrinfo 구조체로 구성된 링크드 리스트가 리턴(어쩌면 그냥 하나만 리턴될 수도 있다).
- 링크드리스트가 리턴되는 경우
하나의 호스트 이름에 여러 주소가 붙어있을 경우, 각 주소마다 하나의 구조체가 리턴
하나 이상의 socket type을 지원할 경우, 하나의 socket type마다 하나의 구조체가 리턴된다.
(하지만 만일 hint의 ai_socketype이 지정되어 있다면 이야기가 다르다)
'학교 수업 > 컴퓨터네트워크' 카테고리의 다른 글
멀티스레드 채팅 서버 (0) | 2024.10.13 |
---|---|
C#멀티 스레드 (0) | 2024.10.13 |
멀티스레드 통신 (1) | 2024.10.13 |
네트워크 통신의 기초 (0) | 2024.10.09 |
네트수행평가 D-4 채팅 서버 기능 추가하기 (0) | 2024.10.09 |