소켓통신 파일 처리와 같다?
- Unix/Linux 시스템에서는, 모든 I/O 자원이 파일처럼 취급된다.
- 소켓도 file descriptor(식별자)를 통해 접근할 수 있는 "열린 파일"
- 소켓을 열면, 파일을 다루는 방식과 유사하게 소켓에 대해 읽기/쓰기/닫기 등의 작업이 가능
rio 구조체를 이용해 소켓 다루기
void rio_readinitb(rio_t *rp, int fd)
{
rp->rio_fd = fd;
rp->rio_cnt = 0;
rp->rio_bufptr = rp->rio_buf;
}
// 사용 예시 : rio 구조체를 socketfd와 연결된 소켓으로 초기화
rio_readinitb(rp, socketfd)
그림으로 이해하는 소켓 인터페이스
주의사항
- listenfd : (listen 함수) 서버가 클라 연결 요청을 수신 대기하기 위한 소켓
- connfd : (accept 함수) 클라와 연결이 성립된 후에 사용하는 소켓
- listen() 쓰레드 (母) 와 분리됨. 서버는 여러 요청을 받아야해서 계속 대기 상태이고, accept() 쓰레드 (子) 요청을 처리하도록 만들어둠
주석과 함께 코드 이해하기
Client단 코드
Server단 코드
결과물
'2️⃣ 개발 지식 B+ > OS' 카테고리의 다른 글
[PintOS Project1] THREADS (1) | 2024.10.08 |
---|---|
어셈블리어 기초 (1) | 2024.10.02 |
[C] 문법 빠르게 훑기 (0) | 2024.08.27 |
[우분투 20.04] 인코딩 utf-8 (0) | 2021.03.30 |
[우분투 20.04] 듀얼 모니터 설정 (0) | 2021.02.07 |