在Python中检查套接字中是否有可用数据

12

我希望有一种功能来检查套接字中是否等待读取的数据,然后再进行读取。类似这样的东西会很有帮助:

if (data available) then read data

else wait in blocking mode till data becomes available

我该如何在Python中实现这个?


1
这就是 select 系统调用为您所做的事情。https://docs.python.org/2.7/library/select.html - squiguy
1
@squiguy,你能给我一个小例子吗? - Vivek V K
1个回答

6
while 1:
  socket_list = [sys.stdin, s]
  # Get the list sockets which are readable
  read_sockets, write_sockets, error_sockets = select.select(socket_list , [], [])
  for sock in read_sockets:
   #incoming message from remote server
   if sock == s:
      data = sock.recv(4096)
      if not data :
        print '\nDisconnected from server'
        sys.exit()
      else :
         #print data
         sys.stdout.write(data)


   #user entered a message
   else :
     msg = sys.stdin.readline()
     s.send(msg)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接