【发布时间】:2014-02-13 09:50:51
【问题描述】:
我正在尝试创建可以通过 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')
它运行良好,但如果我包含程序挂起的行并且必须从任务管理器中停止。
【问题讨论】:
-
它正在等待连接。 s.accept() 是一个阻塞语句。
-
好像你也有类似的问题。看看4. and 5.
-
感谢您的帮助。现在可以使用了。