▼ 한 방에 이해하기
https://94kimseongjun.tistory.com/71
6월14일 epoll, 레벨트리거, 엣지트리거, 멀티캐스트
select() 장단점 장점 - 다양한 운영체제에서 사용 가능 (좋은 이식성) 단점 - 서버가 많은 동시 접속자(Client) 지원 어려움 (FD_SETSIZE로 제한) - 다중화 처리 속도 느림 Select() 함수 리턴 후, 모든 파일
94kimseongjun.tistory.com
+
+
+
+ 나의 덧붙임..
select 함수의 단점
매번 os에게 관찰 대상을 인자로 전달해야 한다.
epoll 개요
select의 대체자. select의 단점을 보완하기 위해 리눅스 환경에서 사용할 수 있도록 만들어졌다.
계속해서 정보를 넘기지 않기 위해서 관찰 대상인 fd들의 정보를 담은 저장소를 직접 os가 담당한다.
python에서 사용하기(server)
기본적인 틀
import select
import socket
### socket 설정 ####################
epoll = select.epoll()
epoll.register(socket.fileno(), select.EPOLLIN)
connection_list = {socket.fileno():socket}
while True:
events = epoll.poll()
for fd, event in events:
sckt = connection_list[fd]
if sckt is socket: # new connection
clientSocket, clientAddr = sckt.accept() # new connection
clientSocket.setblocking(False)
epoll.register(clientSocket.fileno())
connection_list[clientSocket.fileno()]=clientSocket
### 원하는 처리 ##################
elif event & select.EPOLLIN: # 수신할 데이터 존재
data = sckt.recv(BUFSIZE).decode()
### 원하는 처리 ##################
if sckt is socket : event가 발생한 소켓이 내가 설정한 listening 중인 socket이라면, 새로운 클라이언트가 접속한 것이다.
elif event & select.EPOLLIN : event가 발생한 소켓이 접속했던 클라이언트 소켓이고, 수신할 데이터가 존재한다면 데이터를 보내왔을 것이다.
+
멀티 플렉싱 VS 멀티 프로세스
https://wlwwlwwlw.tistory.com/1
select 와 epoll
select 멀티프로세스와 멀티플렉싱 select의 설명에 앞서 멀티플렉싱에 대한 이해가 필요하다. 다중접속 서버의 구현을 위해 멀티프로세스 서버를 사용할 수 있으나 많은 양의 연산이 요구되며 필
wlwwlwwlw.tistory.com
참고
select 와 epoll
select I/O 통지모델의 할아버지 select select는 싱글쓰레드로 다중 I/O를 처리하는 멀티플렉싱 통지모델의 가장 대표적인 방법이다. 해당 파일 디스크립터가 I/O를 할 준비가 되었는지 알 수 있다면,
ozt88.tistory.com
[Network][TCP/IP] 멀티 플렉싱(4)_epoll 함수로 구현(Only Linux)
이 글은 윤성우의 TCP/IP 소켓 프로그래밍 책을 참고하였습니다. 순서 I. select의 단점 II. epoll 개념 III. epoll 관련 함수들 분석 1. epoll_create 2. epoll_ctl 3. epoll_wait IV. 서버 구현 I. select 함수..
aronglife.tistory.com
'네트워크' 카테고리의 다른 글
ssh란 (0) | 2021.09.05 |
---|---|
websocket, socketio 이란? (0) | 2021.07.29 |
python socket select 함수 이해하기 (0) | 2021.07.26 |
nmap script engine(nse) (0) | 2021.07.10 |
socket 통신 과정 (0) | 2021.07.06 |
댓글