Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    gtk + socket (+ ifstream?)

    salve!
    scrivo a voi, fidi pinguini, perchè penso che gtk sia abbastanza pingu, nel caso mi spostate (su programmazione? )

    brevemente:
    ho cominciato a guardare gtk, ho fatto una finestrella e ci ho anche messo dentro i bottoncini, bello bello. ora però mi serviva di usare quella funzionalità che è descritta così:
    Monitoring I/O

    A nifty feature of GDK (one of the libraries that underlying GTK--) is the ability to have it check for data on a file descriptor for you. This is especially useful for networking applications. The following function is used to do this:
    il punto è che the following function e the following example non mi sono per niente chiari, anche perchè usa come esempio una pipe mentre a me serve di usare i socket e non riesco a convertire

    dettagliatamente: (per chi pensa di potermi dare una mano dopo le lettura del brevemente che sono sicuro farà fuggire parecchi )
    devo sviluppare un'applicazioncina client, e se uso i socket come li so io: send+recv succede che la recv mi si blocca finchè non arrivano dati, e questo non è quel che deve succedere. allora gtk giustamente mi fornisce la sua bella utility, mi dovrebbe monitorare il socket e dirmi quando ci sono dati da leggere. fin qui penso abbastanza ovvio.
    ora sull'esempio nel tutorial usano pipe invece di socket, pensavo non fosse un grande problema fare la conversione, invece non mi riesce. là usa mkfifo() la quale crea un file di tipo pipe, mentre coi socket non ho una mksock() inoltre i socket vanno connessi a qualche indirizzo. ma il punto peggiore è che dopo apre la pipe con
    codice:
    new ifstream
    fornendo il nome del file creato con mkpipe, e io non ho la più pallida idea di cosa sia questo ifstream. dopodichè lo usa (l'ifstream) per ricevere i dati dalla pipe, senza usare niente che ricordi vagamente la funzione read() che nel mio caso avrei comodamente sostituito con recv().

    premesso che sono cosciente di essere molto fagiano, c'è tra di voi che siete riusciti a leggere fino qua senza annoiarvi un'anima pia che mi sa indicare la retta via?
    @_=(115,-17,6);print+map{chr$_[$.=$_-$_]*$_**$.+++$_[$.]*$_**$.+++$_[$.]*$_**$.}$.-$...$#_

  2. #2
    ooooook
    ce l'ho quasi fatta
    devo solo capire ancora una cosa...

    come faccio ad associare uno stream ad un socket?
    nel senso, se faccio una cosa del genere:
    codice:
    fstream sd("file");
    ho la possibilità di associare lo stream 'sd' al file 'file'.. ma a me serve un socket, cm si fa?
    chiedo su programmazione?

    thxxx
    @_=(115,-17,6);print+map{chr$_[$.=$_-$_]*$_**$.+++$_[$.]*$_**$.+++$_[$.]*$_**$.}$.-$...$#_

  3. #3
    Utente di HTML.it L'avatar di /dev/null
    Registrato dal
    May 2004
    Messaggi
    1,936
    http://www.lilik.it/~mirko/gapil/gapil.html
    La seconda sezione parla esclusivamente della programmazione di rete...
    E' necessario conoscere anche il capitolo 6.2 che spiega i files descriptors che dovrai per forza usare con i sockets...

    Ultima modifica ad opera dell'utente /dev/null il 01-01-0001 alle 00:00

  4. #4
    thx ora guardo

    cmq i sock già li conosco bene bene
    xò mi sembra che c'è anche quel che cerco, rigrazie
    @_=(115,-17,6);print+map{chr$_[$.=$_-$_]*$_**$.+++$_[$.]*$_**$.+++$_[$.]*$_**$.}$.-$...$#_

  5. #5
    la doc è stupenda!
    però io mi sento così

    a me interessava usare un socket gestendolo tramite un oggetto fstream, mentre là non si parla di c++
    ho trovato il modo di "trasformare" una file descriptor in uno stream: tramite la func fdopen()
    non c'è qualcosa di simile per gli stream del c++?
    volevo provare a farlo con l'fstream per un paio di motivi:

    1. sul tutorial che seguivo c'era un esempio bellino in questo modo, che magari funziona e siccome stavo scrivendo in c++ mi piaceva mantenere le cose coerenti,
    ma soprattutto

    2. oggi ho provato a usare la semplice recv() come sono abituato a fare, ma succedeva una cosa stranissima, anche dopo aver letto con recv() tutti i dati ricevuti, mi veniva notificato che c'erano ancora dati da leggere, e il prog continuava a leggere in eterno magari è un bug di gtk, ma io penso sia molto + probabile che sia un bug della mia fagianità

    quindi ho pensato che magari con l'fstream riuscisse a gestire meglio....
    booooh

    thx cmq x l'interessamento
    non è che qualcuno di voi ha avuto contatti diretti con Gtk::Main::input?
    @_=(115,-17,6);print+map{chr$_[$.=$_-$_]*$_**$.+++$_[$.]*$_**$.+++$_[$.]*$_**$.}$.-$...$#_

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.