我試圖製作一個多線程的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