Python套接字-在单独的函数中使用客户端
我正在开发一个基本的服务器登录系统,几乎可以用于任何事情,问题是当您定义客户端时,例如:Python套接字-在单独的函数中使用客户端,python,multithreading,sockets,tkinter,python-sockets,Python,Multithreading,Sockets,Tkinter,Python Sockets,我正在开发一个基本的服务器登录系统,几乎可以用于任何事情,问题是当您定义客户端时,例如: client, address = socket.accept() data = client.recv(1024) print(data) 所以你可以很容易地做到这一点,但我想做的是这样的: def clientPrint(client): while 1: data = client.recv(1024) print(data) while 1: cli
client, address = socket.accept()
data = client.recv(1024)
print(data)
所以你可以很容易地做到这一点,但我想做的是这样的:
def clientPrint(client):
while 1:
data = client.recv(1024)
print(data)
while 1:
client, address = socket.accept()
Thread(target=clientPrint, args=(client)).start()
如您所见,我想在另一个函数中使用客户机,但出现以下错误:
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Python34\lib\threading.py", line 920, in _bootstrap_inner
self.run()
File "C:\Python34\lib\threading.py", line 868, in run
self._target(*self._args, **self._kwargs)
TypeError: clientRecv() argument after * must be a sequence, not socket
这只是我想做的一个粗略的想法,那么我是否可以在我想要的函数中使用socket客户机呢?如果有人能为我找到解决这个问题的办法,我将非常感激!如果您需要更多的代码来更好地了解我想要什么,只需在评论中提问,我会添加它。我已经到处找过这样的东西了,但遗憾的是我什么也没找到
提前谢谢 问题在于最后一行:
Thread(target=clientPrint, args=(client)).start()
(客户端)
不创建元组。要创建包含单个项的元组,需要将其更改为(client,)
实际上是逗号构成元组。(除了特殊的空元组语法:()
)例如,这使元组:
seq = 1, 2, 3
还允许使用尾随逗号,这就是使用单个元素创建元组的方式
seq = 1,
括号仅在此处,以便python不会认为逗号是参数分隔符
谢谢,只是出于好奇,你为什么要这样做?@danielalexander我编辑了我的答案,并解释了一下。