2014-02-13 31 views
0

我想創建應用程序,可以通過套接字在Python中進行通信。我已經能夠在控制檯程序中實現這一點,並試圖做WPF.It是相當簡單的程序,應該作爲服務器,創建一個套接字,綁定到一個端口,然後監聽連接。我現在面臨的問題是,每次我包含套接字的代碼接受連接,我的程序掛起。我試圖在網上尋找解決方案,但似乎每個人都在做這件事,就像我在做這件事一樣。有沒有人遇到過這個問題,如果是的話,你是如何解決這個問題的。 在此先感謝您的幫助。socket.accept()掛我的程序

這是代碼:

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

它運行正常,但如果我有行程序掛起並且必須從停止:

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

如果我沒有線運行程序任務管理器。

+1

它正在等待連接。 s.accept()是一個阻塞語句。 –

+0

好像你有類似的問題。看看[4。和5.](http://stackoverflow.com/a/21533765/1320237) – User

+0

感謝您的幫助..現在工作。 – techRooky

回答

0

斷開服務器。

您不能在GUI事件處理程序中進行阻塞調用。 GUI線程必須及時處理Windows消息 - 您不能只在處理程序中阻止執行。

+0

哦..現在我明白了..有意義..感謝您的幫助。 – techRooky