Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的select.select需要1-3个参数序列_Python_Sockets - Fatal编程技术网

python中的select.select需要1-3个参数序列

python中的select.select需要1-3个参数序列,python,sockets,Python,Sockets,我不断收到这个错误,1-3个参数需要序列 import socket # Import socket module import sys import select s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Create a socket object host = "127.0.0.1" # Get local machine name port = 50001

我不断收到这个错误,1-3个参数需要序列

import socket               # Import socket module
import sys 
import select

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)        # Create a socket object
host = "127.0.0.1" # Get local machine name
port = 50001               # Reserve a port for your service.
s.bind((host, port))        # Bind to the port

a = []
b = []

s.listen(1)                 # Now wait for client connection.
c, addr = s.accept()     # Establish connection with client.

s.setblocking(0)

ready = select.select(s, s, s, 1)  # i believe the error lies in here 
while True:
   print "reached"
   if ready[0]:
      print "reached1"
      data = mysocket.recv(4096)
   print 'Got connection from', addr
   c.send('Thank you for connecting \r\n') #all strings have to end with /r/n!!!
   print "sent"
c.close()                # Close the connection
错误

Select.Select参数1-3必须是序列

我是python新手,因此不确定错误是什么。我在谷歌上搜索了另一篇文章中的select代码,因为我希望我的recv套接字是非阻塞的

将三个列表作为参数,
rlist
wlist
xlist

  • rlist:等待阅读准备就绪
  • wlist:等待,直到准备好写作
  • xlist:等待“异常情况”(请参阅手册页了解您的系统如何考虑这种情况)
您传递的不是列表,而是单个套接字

试试这个:

ready = select.select([s], [s], [s], 1)
同样,返回值将是三个列表的元组,第一个包含准备读取的套接字,第二个套接字准备写入,第三个套接字处于“异常条件”

还要注意,在while循环中,您从不更新
ready
,因此您将始终使用相同的套接字列表。另外,您应该在某个地方有一个
中断
,否则您将以无休止的循环调用
c.send

将三个列表作为参数,
rlist
wlist
xlist

  • rlist:等待阅读准备就绪
  • wlist:等待,直到准备好写作
  • xlist:等待“异常情况”(请参阅手册页了解您的系统如何考虑这种情况)
您传递的不是列表,而是单个套接字

试试这个:

ready = select.select([s], [s], [s], 1)
同样,返回值将是三个列表的元组,第一个包含准备读取的套接字,第二个套接字准备写入,第三个套接字处于“异常条件”

还要注意,在while循环中,您从不更新
ready
,因此您将始终使用相同的套接字列表。另外,您应该在某个地方有一个
中断
,否则您将在一个无休止的循环中调用
c.send