2010-06-07 61 views
1

我正在編寫一個通過網絡發送文件的應用程序,我想開發一個自定義協議,以便在功能豐富性方面不會限制自己(http不合適,最接近的是bittorrent協議也許)。在python中的網絡應用程序和圖形用戶界面

我試過扭曲,我已經構建了一個很好的應用程序,但有一個扭曲的bug使得我的GUI被阻塞,所以我必須切換到另一個框架/策略。

你有什麼建議?使用原始套接字並使用gtk mainloop(工具包中有類似功能的選項)太困難了?

它是可行的在不同的線程中運行兩個主循環?

問計建議

+1

如果你有一個扭曲的應用程序,主要是工程...爲什麼不只是修復它?用響應式GUI編寫扭曲的應用程序是絕對有可能的。你確定扔掉工作代碼是正確的答案嗎? – Rakis 2010-06-07 18:03:10

+0

問題在於扭曲,而不是在我的應用程序中,我很抱歉,我剛剛注意到,這並不清楚我的意思,特別是錯誤是:http://twistedmatrix.com/trac/ticket/4489 – pygabriel 2010-06-07 19:02:55

+0

啊。那會做。沒有切換GUI工具包或潛入並試圖自己修復扭曲的反應堆(選擇反應堆並不算太壞,但不知道GTK),它肯定可能值得開始新鮮。 – Rakis 2010-06-07 19:29:36

回答

1

聲明:我幾乎沒有網絡應用程序的使用經驗。

這就是說,原始套接字並不是非常難纏住你的頭部/使用,特別是如果你不太擔心優化。當然,這需要更多的思考。但使用GTK和原始套接字應該相當簡單。特別是因爲你已經使用了扭曲的框架,而IIRC只是抽象出一些更爲細節化的套接字管理細節。

1

兩個線程:一個用於GUI,一個用於發送/接收數據。 Tkinter對此將是一個非常好的工具包。您不需要扭曲或任何其他外部庫或工具包 - 從盒子出來就足以完成工作。

1

如果你的應用程序有點類似於bittorrent,爲什麼不檢查Deluge http://deluge-torrent.org/的源代碼並從它構建?它用Python編寫的,它確實是使用bittorrent協議,它有確實有有一個GTK用戶界面。

1

作爲一種替代扭曲和你似乎使用的GUI庫,試試PyQt怎麼樣?它在同一個事件循環中提供了一個GUI和非阻塞套接字。這樣,您就不必擔心互操作性問題,這似乎是您所面臨的問題。

希望這會有所幫助!