socket.accept()挂起我的程序

时间:2014-02-13 09:50:52

标签: python wpf sockets

我正在尝试创建可以通过python中的套接字进行通信的应用程序。我已经能够在控制台程序中实现这一点并尝试在WPF中执行相同操作。这是一个非常简单的程序,应该充当服务器,创建一个套接字,绑定到一个端口,然后侦听连接。我现在面临的问题是每次我包含套接字的代码接受连接,我的程序挂起。我试图在线寻找解决方案但是每个人似乎都在做我完全相同的事情。有人之前遇到过这个问题,如果是这样,你是怎么解决的。 在此先感谢您的帮助。

这是代码:

import wpf
import socket
import sys
import clr
import System


HOST=''
PORT = 8888

from System.Windows import Application, Window

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)


class MyWindow(Window):
    def __init__(self):
        wpf.LoadComponent(self, 'managementToolSimulator2.xaml')


    def Button1_Click(self, sender, e):
        pass

    def Window_Loaded(self, sender, e):
        s.bind((HOST,PORT))
        s.listen(5)
        self.ListBox1.AddText('Listening...')

        while 1:
            conn,addr=s.accept()
            self.ListBox1.AddText('Got connection')
        pass


if __name__ == '__main__':
    Application().Run(MyWindow())

如果我在没有该行的情况下运行该程序:

     while 1:
        conn,addr=s.accept()
        self.ListBox1.AddText('Got connection')

它运行正常但如果我包含该行程序挂起并且必须从任务管理器停止。

1 个答案:

答案 0 :(得分:0)

断开服务器的连接。

您不得在GUI事件处理程序中进行阻塞调用。 GUI线程必须及时处理Windows消息 - 您不能只是阻止处理程序中的执行。