2010-06-07 3 views
1

Я пишу приложение, которое отправляет файлы по сети, я хочу разработать собственный протокол, чтобы не ограничивать себя в срок по функциональности (http не подходит, ближайшая вещь - это возможно, протокол bittorrent).Сетевое приложение и графический интерфейс в python

Я пробовал с искаженным, я создал хорошее приложение, но есть ошибка в скрученном, что блокирует мой графический интерфейс, поэтому я должен переключиться на другую структуру/стратегию.

Что вы предлагаете? Использование сырых сокетов и использование gtk mainloop (есть специальные функции в наборе инструментов) слишком сложно?

Это жизнеспособный бег двух mainloops в разных потоках?

Просить предложения

+1

Если у вас есть скрученное приложение, которое работает в основном ... почему бы просто не исправить его? Определенно можно писать скрученные приложения с гибкими графическими интерфейсами. Вы уверены, что отбросить рабочий код - правильный ответ? – Rakis

+0

Проблема в скрученном, а не в моем приложении, извините, я только что заметил, что неясно, что я имел в виду, в частности ошибка заключается в следующем: http://twistedmatrix.com/trac/ticket/4489 – pygabriel

+0

Ах. Это сделало бы это. За исключением переключения инструментальных средств GUI или погружения и попытки исправить скрученный реактор самостоятельно (выбранный реактор не так уж плох, не знаю о gtk, хотя) ... конечно, возможно, стоит начать новый. – Rakis

ответ

1

Отказ от ответственности: у меня мало опыта работы с сетевыми приложениями.

Это, как говорится, сырые сокеты не очень сложно обернуть вокруг головы/использовать, особенно если вы не слишком беспокоитесь об оптимизации. Разумеется, это требует больше мысли. Но использование GTK и сырых сокетов должно быть довольно простым. Тем более, что вы использовали скрученную фреймворк, которая IIRC, просто абстрагирует некоторые из более подробных подробностей управления сокетами.

1

Два потока: один для GUI, один для передачи/приема данных. Tkinter был бы идеальным инструментом для этого. Вам не нужны скрученные или любые другие внешние библиотеки или инструментальные средства. То, что выходит из коробки, достаточно для выполнения работы.

1

Если ваше приложение несколько похоже на bittorrent, почему бы не проверить исходный код Deluge http://deluge-torrent.org/ и построить из него? Он is написан на Python, он делает использует протокол bittorrent, и он делает имеет пользовательский интерфейс GTK.

1

В качестве альтернативы скрученной и любой библиотеке GUI, которую вы, кажется, используете, как насчет того, чтобы попробовать PyQt? Он предоставляет графический интерфейс и неблокирующие сокеты в одном цикле событий. Таким образом, вам не нужно беспокоиться о проблемах совместимости, которые, похоже, являются проблемой, с которой вы сталкиваетесь.

Надеюсь, это поможет!

Смежные вопросы