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)
 
 
 
댓글
댓글 쓰기