Welche Cross Plattform fähige Netzwerk API/Library könnt ihr mir für eine GTK 2.x Anwendung empfehlen?



  • Hallo,

    Ich will ein kleines Programm mit GTK+ 2.x schreiben
    und suche jetzt noch etwas passendes für die Netzwerkfunktionen.

    Bei der Qt Library ist so etwas ja schon alles dabei,
    nur, was nimmt man bei GTK+ 2.x?

    Ich dachte zuerst an irgendwelche Gnome Bibliotheken (z.b. Gnome-VFS),
    aber das Programm sollte später auch mal unter Windows laufen was
    die Verwendung von Gnome spezifischen Bibliotheken ja doch sehr stark einschränkt bis unmöglich macht.



  • Man kann auch Qt und Gtk mischen. 🙂



  • ich weiss ja nicht was genau du brauchst, aber GTK dependet auf der Glib
    und vielleicht kannst du mit deren IO-channels was anfangen:

    http://developer.gnome.org/doc/API/2.0/glib/glib-IO-Channels.html



  • Danke für den Tipp, ich würde mir die IO-channels mal genau anschauen,
    gibt es darüber vielleicht etwas ausführlichere Informationen?
    Z.b. Beispielcode, Tutorials?
    Die Referenz allein ist schon recht dünn.

    @Ponto

    Ich möchte Qt bei meinem Programm nicht verwenden.



  • webmässig hab ich da nix zur hand.
    ich kann mal zuhause rumkruschteln ob ich noch ein paar codeschnipsel
    finde.

    hatte das seinerzeit mal für FIFO-IPC benutzt.

    was krieg ich auf die schnelle aus dem kopf noch hin:

    die channels erlauben dir Sockets, FIFOs, usw aus einer eventloop
    heraus zu pollen, bzw., die loop wirft nen callback wenn z.b. daten
    am Socketz, FIFO ankommen.

    du brauchst eine g_main_loop als zentrale event-loop
    erzeugst dir einen g_io_channel_unix_new () wo du den FD deines
    FIFO, socket, whatever übergibst.

    mit g_io_channel_add_watch() hängst du den io_channel in die
    loop mit entsprechender konfiguration per übergabeparameter,
    je nachdem was du haben willst.

    wenn die übergebene condition eintrifft wird die callback-function
    aufgerufen.

    einigermassen klar ?



  • Ja, so in etwa, ich werde da mal etwas herumprobieren, danke.

    Nur noch ne Frage, die g_io_channel_unix_new() Funktion, ist die nicht unix spezifisch? Was nehm ich da für Windows?



  • ja schätze auch mal, dass wo UNIX draufsteht UNIX gemeint ist.
    ich hab das auch nur unter Linux benutzt. Für win soll man
    g_io_channel_new_file() benutzen, ausserdem steht in der ref., win support
    is partially, was immer das heisst.

    da musst du selber mal ein wenig stöbern. von win hab ich echt keine ahnung.


Anmelden zum Antworten