我正在尝试创建可以通过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')
它运行正常但如果我包含该行程序挂起并且必须从任务管理器停止。
答案 0 :(得分:0)
断开服务器的连接。
您不得在GUI事件处理程序中进行阻塞调用。 GUI线程必须及时处理Windows消息 - 您不能只是阻止处理程序中的执行。