我对python有点陌生。我目前正在尝试在程序中制作和使用套接字列表/数组。所以我声明了一个数组,如下所示:
myCSocks = ['CSock1', 'CSock2', 'CSock3', 'CSock4', 'CSock5']
我正在尝试按如下方式使用我的数组元素:
myCSocks[i], addr = serverSocket.accept()
message = myCSocks[i].recv(1024)
我收到以下错误:
Traceback (most recent call last):
File "./htmlserv_multi.py", line 22, in <module>
message = myCSocks[i].recv(1024)
AttributeError: 'str' object has no attribute 'recv'
这对我来说很有意义,它是说我的数组元素是 String 类型而不是套接字。所以我明白我的问题是什么,但我不知道如何解决它。我用谷歌搜索了“python 套接字列表”,但没有找到任何东西。任何帮助将不胜感激。谢谢你。
PS:我的最终目标是创建一个非常简单的多线程 TCP Web 服务器(使用 python)
代码:
#! /usr/bin/env python
from socket import *
#does this work?
myCSocks = []
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.bind(('192.168.1.4',12000))
serverSocket.listen(5)
while True:
for i in range(0, len(myCSocks)+1):
myCSocks[i], addr = serverSocket.accept()
try:
for i in range(0, len(myCSocks)):
message = myCSocks[i].recv(1024)
filename = message.split()[1]
f = open(filename[1:])
outputdata = f.read()
myCSocks[i].send('HTTP/1.1 200 OK\r\n\r\n')
for p in range(0, len(outputdata)):
myCSocks[i].send(outputdata[p])
myCSocks[i].close()
except IOError:
connectionSocket.send('HTTP/1.1 404 Bad Request\r\n\r\n')
connectionSocket.send('<HTML><p>ERROR 404: BAD REQUEST!</p></HTML>')
serverSocket.close()
exit()