我试图制作一个多线程的Web代理。我可以做一个单线程的,但是当我尝试使用多线程时,它每次都会抛出这个错误。`member_descriptor`对象无法在套接字对象上调用
Traceback (most recent call last):
File "malwareProxy.py", line 25, in newClientInteraction
request = clientSocket.recv(BUFFLEN)
TypeError: 'member_descriptor' object is not callable
我有这些进口:
import sys
import thread
from socket import *
而且重要的位码:
def newClientInteraction(clientSocket, addr):
try:
port = 80
request = clientSocket.recv(BUFFLEN)
....
serverListener = socket(AF_INET, SOCK_STREAM)
serverListener.bind(("", serverPort))
serverListener.listen(100)
print("\nProxy Server listening on port {0}...".format(serverPort))
# Start to listen for connections
while True:
(newsocket, addr) = serverListener.accept()
print("Connection made from: {0}".format(newsocket.getpeername()))
thread.start_new_thread(newClientInteraction, (socket, addr))
请帮助。我对Python很新,不知道为什么我得到这个错误。我看了一些关于这个错误的其他帖子,答案似乎与使用多个文件和导入的程序员有关,我只使用一个文件。谢谢。
当您启动线程,你似乎传递** **插座,而你创造了一个__( newsocket,addr)__对上面两行。尝试在__thread.start_new_thread__调用中传递** newsocket **。 – sal
我真的很蠢!谢谢。 –
不,你不是。这是一个不幸的拼写错误。我添加了一个答案:如果没有问题,请接受它。 :) – sal