python socket select timeout example
본 포스트는 python socket에서 리눅스의 select와 동일한 기능을 하는 select 모듈 사용 예제를 싣고 있다.
이전 포스트에서 non-blocking socket 프로그래밍에 대해 알아봤었다. 아래 링크의 포스트에서 만들어진 예제에 'select' 모듈을 추가해 예제 코드를 만들었다.
python socket API 와 non-blocking socket server client example code
1. python socket select timeout example
2. python select API
import select
select.select(rlist, wlist, xlist[, timeout])
arguments:
rlist : 읽기 준비를 기다릴 파일 디스크립터 리스트. file, sockt
등.
wlist : 쓰기 준비를 기다릴 파일 디스크립터 리스트.
xlist : exception 상태를 기다릴 파일 디스트립터 리스트.
timeout : 대기 시간. 단위 초.
return:
준비된 디스트립터 리스트를 반환한다. 만약 timeout이 지나면, 빈
리스트를 반환한다.
3. select example code
# socket에서 데이터를 읽을 수 있는 상태를 기다린다.
r,w,x = select.select([sock,],[],[],timeout_sec)
if len(r) <= 0:
# timeout인 경우, 빈 리스트를 반환 한다.
return None
# 읽을 수 있는 상태가 되면,
# select.select([sock,],[],[],timeout_sec) 는 [socket][][]을 반환한다.
if r[0].getsockname() != sock.getsockname():
return None
data = sock.recv(size)
댓글
댓글 쓰기