Python Client()缺少2个必需的位置参数:';康涅狄格州';和';地址';
错误 我面临着错误 回溯(最近一次呼叫最后一次): 文件“C:/Users/zaeem/PycharmProjects/socketprogramming/main.py”,第40行,在 开始() 文件“C:/Users/zaeem/PycharmProjects/socketprogramming/main.py”,第29行,开始 线程(target=Client(),args=(conn,addr)) TypeError:客户端()缺少2个必需的位置参数:“conn”和“addr”Python Client()缺少2个必需的位置参数:';康涅狄格州';和';地址';,python,Python,错误 我面临着错误 回溯(最近一次呼叫最后一次): 文件“C:/Users/zaeem/PycharmProjects/socketprogramming/main.py”,第40行,在 开始() 文件“C:/Users/zaeem/PycharmProjects/socketprogramming/main.py”,第29行,开始 线程(target=Client(),args=(conn,addr)) TypeError:客户端()缺少2个必需的位置参数:“conn”和“addr” 您正在该
您正在该行中调用客户端函数-您需要的是:
import threading
import time
Host = socket.gethostbyname(socket.gethostname())
port = 4444
Recived_Bytes = 1024
Format = 'utf-8'
def Client(conn, addr):
print(f" New Client Connected : {addr} Connected : ")
connected = True
while connected:
length = conn.recv(Recived_Bytes).decode(Format)
length = int(length)
if length:
msg = conn.recv(length).decode(Format)
print(f"[Client {addr}says : ]{msg}")
if msg == "disconnect" or msg == "Disconnect" or msg == "DISCONNECT":
connected = False
conn.close()
def start():
sever.listen()
while True:
conn, addr = sever.accept()
thread = threading.Thread(target=Client(), args=(conn, addr))
thread.start()
print("Connection : ")
if __name__ == '__main__':
print("Hello Zaeem ")
print(Host)
ADDR = (Host, port)
sever = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sever.bind(ADDR)
start()
请注意,在这里您省略了Client之后的()命令-因此您不想调用Client,您只是传递了对Client函数的引用
正如我在评论中提到的,使用
Client
作为名称会误导了解Python的人,建议函数使用lowercase
或snake\u case
,并使用大写名称(所谓的CamelCase
)应仅用于类。您正在该行中调用客户端函数-您需要的是:
import threading
import time
Host = socket.gethostbyname(socket.gethostname())
port = 4444
Recived_Bytes = 1024
Format = 'utf-8'
def Client(conn, addr):
print(f" New Client Connected : {addr} Connected : ")
connected = True
while connected:
length = conn.recv(Recived_Bytes).decode(Format)
length = int(length)
if length:
msg = conn.recv(length).decode(Format)
print(f"[Client {addr}says : ]{msg}")
if msg == "disconnect" or msg == "Disconnect" or msg == "DISCONNECT":
connected = False
conn.close()
def start():
sever.listen()
while True:
conn, addr = sever.accept()
thread = threading.Thread(target=Client(), args=(conn, addr))
thread.start()
print("Connection : ")
if __name__ == '__main__':
print("Hello Zaeem ")
print(Host)
ADDR = (Host, port)
sever = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sever.bind(ADDR)
start()
请注意,在这里您省略了Client之后的()命令-因此您不想调用Client,您只是传递了对Client函数的引用
正如我在评论中提到的,使用
Client
作为名称会误导了解Python的人,建议函数使用lowercase
或snake\u case
,并且大写名称(所谓的CamelCase
)只能用于类。target=Client()
是对函数的直接调用,在主线程中没有参数。您只需要target=Client
将函数本身传递给线程。还要注意,调用函数Client
并不好-大多数阅读代码和熟悉python的人都会认为Client
是一个类,由于建议函数使用小写
或snake\u case
target=Client()
是对函数的直接调用,在主线程中没有参数。您只需要target=Client
将函数本身传递给线程。还要注意,调用函数Client
并不太好-大多数阅读代码和熟悉python的人都会认为Client
是一个类,因为建议函数使用lowercase
或snake\u case