Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python套接字-在单独的函数中使用客户端_Python_Multithreading_Sockets_Tkinter_Python Sockets - Fatal编程技术网

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我编辑了我的答案,并解释了一下。