Newsgroup: it.comp.os.linux.development
Titolo: software GTK linux/windows e socket...

Devo realizzare una piccolo software chegiri sia su windows che su
linux. Ho pensato a GTK con interfaccia grafica.
Il software si dovrà poi interfacciare con un server remoto linux. Per
linux stò studiando i socket per aprirmi una comunicazione su una
porta e trasferire i dati. Linux a Linux è tutto ok. Quello che mi
chiedo p se poi lo stesso sorgente funzioerà anche per windows oppure
dovrei vedermi lato windows come gestisco la comunicazione sulla
IP/porta?
Penso che dovrei vedere come è fatto GAIM per windows...
Chi sà dirmi qualche cosa in proposito?
Ciao a tutti,
Keres Contorni.

 Chi sà dirmi qualche cosa in proposito?
Mi pare che le GTK abbiano anche qualche funzione per i socket, prova
a darci un'occhiata: in teoria dovrebbe andare sia su linux che su
windows.
Ciao
  Andrea

   Andrea
Ora provo a fare un esempio stupido che funzioni bene con linux, poi
provo a compilarco su win tramile le cgiwyn o come si chiamano...
Ciao!!!
K.

gtk è un must ? io mi sono trovato molto bene con wxwidgets che hanno 
anche le classi per i socket. Con gtk ti devi tenere 2 source tree 
diversi ? (qualcuno mi ha detto di si...qualcuno di no ) .... con 
wxwidgets tieni solo makefile diversi...

 wxwidgets tieni solo makefile diversi...
di solito, a meno che tu non abbia strani requisiti, le applicazioni
basate su gtk+ funzionano a meno di una ricompilazione sia sotto win32
che sotto linux.
ciao,
 Emmanuele.

 Penso che dovrei vedere come è fatto GAIM per windows...
non esageriamo.
un buon libro sulla programmazione di rete potrebbe darti una mano.
ciao,
 Emmanuele.

Andrea Palazzi wrote:

GtkPlug e GtkSocket (immagito ti stessi riferendo a questi) sono una
coppia di oggetti che permettono l'embedding di un widget in un processo
all'interno di un'altra finestra, in un altro processo, a patto di
conoscere l'id della finestra bersaglio.
non c'entrano nulla con la programmazione di rete: per quella devi usare
quello che ti mette a disposizione il sistema operativo sottostante; ci
sono librerie basate su GLib e GObject che astraggono le differenze
tramite una singola API e "giocano pulito" con il main loop delle GTK+.
ciao,
 Emmanuele.

 sfugge.
C'entra solo nel senso che ti forniscono uno strato già prefatto che ti 
astrae dalla piattaforma

 astrae dalla piattaforma
in un widget toolkit?
il prossimo passo è il kitchen sink, immagino *grin*.
ciao,
 Emmanuele.

 in un widget toolkit?
Beh wxwidgets ti da anche altre classi non strettamente legate al 
toolkit per le GUI ... per esempio hai classi di astrazione per il 
network o per gli odbc .... per fare applicazioni ti fanno molto comodo ...


 GtkPlug e GtkSocket (immagito ti stessi riferendo a questi) sono una
No, mi sembrava di ricordare che ci fosse qualcosa proprio sui socket,
ma evidentemente mi confondo con qualcos'altro - probabilmente con
http://developer.gnome.org/doc/API/2.0/glib/glib-IO-Channels.html
Ciao
  Andrea

Andrea Palazzi wrote:

i GIOChannel sono usabili su tutti i file descriptor, non solo socket ma
anche pipe, file, etc.
ciao,
 Emmanuele.

 
Oppure usi qualche libreria che già ti astrae dal sistema operativo ... 
   per C++ c'è ace ma anche tante altre (? netlib ? mi sembra) o se usi 
wxwidgets ci sono già incluse.... perchè reinventarsi ogni giorno la ruota ?

Un consiglio: dare un'occhiat a Tcl e Tk.  E` un modo estremamente
veloce di mettere su un sistema con i socket e un GUI.
-- 
David N. Welton
- 
http://www.dedasys.com/davidw/
Linux, Open Source Consulting
- 
http://www.dedasys.com/

 veloce di mettere su un sistema con i socket e un GUI.
IMHO oggi con python fai prima e meglio che usando tcl/tk, hai un bel
linguaggio con socket, gui e tutto quello che ti serve.
Ciao
  Andrea


Usi la version 2.8 o superiore di GTK su windows vero?
Quelli di GTK hanno avuto la "geniale" trovata di rendere i socket NON 
BLOCKING di default su windows per rendere l'implementazione piu` pulita...
Di fatto quindi quando tu attacchi un socket ad una callback con 
gtk_input_add o l'analoga chiamate degli g_io channels il tuo socket 
diventa magicamente non bloccante quindi se fai cose tipo:
send(QUALCOSA)
recv(ACK)
send(QUALCOSALTRO)
dentro alle tue callback di gestione dei socket queste non funzioneranno 
come su unix.
Ci ho pure litigato con Tor Lollqvist (il mantainer di GTK x win32), ma 
non hanno voluto sentir ragioni, sembra che l'implementazione che 
usavano fino alla 2.6 avesse dei problemi nel caso di piu' gtk_main 
paralleli su diversi thread, di conseguenza hanno fatto questa modifica. 
Adesso su Win32 associano degli event ad ogni socket per aspettare 
l'input con un waitformultipleobjects(), peccato che associare un evento 
ad un socket nelle api winsock abbia appunto il side effect di rendere 
il socket stesso non bloccante, c'e' un bug report aperto sul bugzilla 
di GTK con numerosi commenti a riguardo, ora non lo trovo pero'...
Fino a qualche mese fa GAIM infatti funzionava SOLO con gtk 2.4 o 2.6, 
lo scrivevano nelle FAQ anche, non so se hanno modificato il codice per 
inseguire sto cambiamento che hanno fatto di recente.
Bye,
  Gabry


I socket di Tcl sono molto piu` immediati, e lo stesso vale per la sua
gestione degli eventi.  Tcl ha un sistema simile a 'twisted', ma come
parte integrale del linguaggio.  Inoltre, Tcl e` chiaramente ben
integrato con Tk.
Insomma, Python sara` piu` di moda, ma con l'avvenire di Ruby, vediamo
quanto facilmente cambiano le mode.  La qualita`, invece, e a Tcl non
manca.  Neanche a Python, un ottimo linguaggio per molte cose, niente da
dire, solo che e` stancante ogni tanto cercare di fare capire che Tcl ha
molte cose buone anche se non e` l'ultimissima moda.
