套接字和线程python

时间:2014-05-15 16:10:50

标签: python multithreading sockets

我正在尝试这个。每当用户打开该程序时,他都应该在线“#39;并听取联系 这里加载了GUI。

class AppUI(Frame):

    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        self.initUi()

    def initUi(self):
        self.parent.title("Redux")
        self.pack(fill=BOTH, expand=1)
        self.initMenu()
        self.initAudio()
        self.initMidi()
        self.initBroadcast()
        self.initFriendList()

但每当我将我的帖子的代码粘贴到initUi下时,它就会在加载时停滞不前,我的GUI也不会显示出来。 (继续加载,因为线程正在监听连接)

thread2 = threading.Thread(target=Connection().getOnline("", 50007))
thread2.start()

Class Connection():
    def getOnline(self, host, port):
        self.s.bind((host, port))
        self.s.listen(2)
        print('Now online - listening to connections')
        conn, addr = self.s.accept()
        print("Connected to:", addr)

为什么我的线程不起作用?

1 个答案:

答案 0 :(得分:4)

你的麻烦就在这一行:

thread2 = threading.Thread(target=Connection().getOnline("", 50007))

在这里,您实际上正在调用 Connection().getOnline("", 50007),这会阻止。您还没有在后台完成此操作,您已经启动线程之前完成了它。您需要将呼叫调整为如下所示:

thread2 = threading.Thread(target=Connection().getOnline, args = ("", 50007))