`member_descriptor` 对象不可在套接字对象上调用
`member_descriptor` object is not callable on socket object
我正在尝试制作一个多线程的 Web 代理。我可以做一个单线程的就好了,但是当我尝试使用多线程时,它每次都会抛出这个错误。
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 的新手,不知道为什么会出现此错误。我看过其他一些关于这个错误的帖子,答案似乎与程序员使用多个文件和导入有关,我只使用一个文件。谢谢。
该错误是由于在启动新线程时传递参数时出现了不幸的拼写错误。 不幸 因为它与 socket 库中的名称匹配,因此产生的错误更难调试。
可以通过尝试调用来重现错误消息:
import socket
socket.socket.recv(BUFFLEN)
这就是打字错误造成的结果。值得庆幸的是,通过更改此行很容易修复:
thread.start_new_thread(newClientInteraction, (socket, addr))
改为阅读
thread.start_new_thread(newClientInteraction, (newsocket, addr))
我正在尝试制作一个多线程的 Web 代理。我可以做一个单线程的就好了,但是当我尝试使用多线程时,它每次都会抛出这个错误。
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 的新手,不知道为什么会出现此错误。我看过其他一些关于这个错误的帖子,答案似乎与程序员使用多个文件和导入有关,我只使用一个文件。谢谢。
该错误是由于在启动新线程时传递参数时出现了不幸的拼写错误。 不幸 因为它与 socket 库中的名称匹配,因此产生的错误更难调试。
可以通过尝试调用来重现错误消息:
import socket
socket.socket.recv(BUFFLEN)
这就是打字错误造成的结果。值得庆幸的是,通过更改此行很容易修复:
thread.start_new_thread(newClientInteraction, (socket, addr))
改为阅读
thread.start_new_thread(newClientInteraction, (newsocket, addr))