线程丢失1需要位置参数

时间:2016-12-18 11:58:20

标签: python python-multithreading

只是给出一些背景信息:我目前正在学习Python,为此我开始了一个小项目。

我写了两个Python脚本:主机和客户端脚本。

我已经处于多个客户端可以连接到一个主机"并且主机可以向所有客户端发送随机字符串。

现在我想解决这个问题,如果客户端与主机断开连接,则无法知道,直到再次调用CLIENTSOCKET为止。

所以我编写了checkConnection方法,每隔5秒ping一次所有客户端。

class Connection():

    def __init__(self):
        self.s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

    def bound(self,RHOST,PORT):
        self.s.bind((RHOST,PORT))
        self.s.listen(1000)

    def connect(self):
        ((CLIENTSOCKET,ADRESS)) = self.s.accept()
        return (CLIENTSOCKET,ADRESS)

def newConnection(Connection,CLIENTS):
    con = Connection
    cli = CLIENTS
    while True:
        c = con.connect()
        if c != None:
            if len(cli) != 0:
                for x in range (len(cli)):

                    if c[1][0] == cli[x][1][0]:
                        pass
                    else:
                        cli.append(c)
            else:
                cli.append(c)

def checkConnection(CLIENTS):
    cli = CLIENTS
    while True:
        if(len(cli)!=0):
            for x in range(len(cli)):
                try:
                    cli[x][0].sendall(b'')
                except:
                    del cli[x]
            time.sleep(5)

我使用每个方法作为目标创建Threads并为其提供所需的参数。第一个线程就像应该的那样开始,但是第二个线程没有。

我真的不知道为什么?

t = threading.Thread(target = newConnection,name = "newConnection",args = (g,CLIENTS))
t2 = threading.Thread(target = checkConnection,name = "checkConnection",args = (CLIENTS))
t.start()
t2.start()

线程checkConnection中的异常:

Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python35-32\lib\threading.py", line 914, in _bootstrap_inner
    self.run()
  File "C:\Users\User\AppData\Local\Programs\Python\Python35-32\lib\threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
TypeError: checkConnection() missing 1 required positional argument: 'CLIENTS'

0 个答案:

没有答案