socket.accept() 挂起我的程序



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

这是代码:

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')

它运行良好,但是如果我包含该行,则程序将挂起,并且必须从任务管理器中停止。

线程关闭服务器。

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

最新更新