我使用这个函数通过套接字运行我的服务器:
def run(self):
# The 'main' function
print 'Running ... '
Running = True
while Running:
InList,OutList,ExceptList = select.select(self.Connections,[],[])
for Connection in InList:
if Connection == self.Server:
# Server got a new connecting Client
User, Adress = self.Server.accept() # New User Connection
Data = {'User':User,'Adress':Adress}
self.Connections.append(Data) # Store the new User Connection
print 'User ', Data, ' connected'
else:
# Some other Socket got data for the Server
Data = Connection.recv(1024)
if not Data:
print 'No new Data!'
break
print Data
但是,在发送数据时,我在第 23 行(即 select() 行)上收到此错误:TypeError: argument must be an int 或具有 fileno() 方法。
查找手册和这些示例(http://code.activestate.com/recipes/531824-chat-server-client-using-selectselect/和http://ilab.cs.byu.edu/python/select/echoserver .html ) 我看不出有什么区别,也不明白为什么我不能工作。self.Connections 仅包含服务器套接字,当使用 print self.Connections 时,它给了我:
[<socket._socketobject object at 0x020B6BC8>]
声明,这是我传递给 select() 的列表,应该是正确的。
我究竟做错了什么?谢谢!