Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Eigener Socket-Stream

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.11.2005, 21:17 Uhr
Sadrior



Hallo

Ich code mir im Moment gerade eine kleine Socket-Library für meine eigenen Zwecke.
Jetzt wollte ich mir Streams machen damit ich die standart Funktionen wie getline , die << und >> Operatoren usw. für meine Sockets verwenden kann.

Leider kenn ich mich mit Streams recht wenig aus und weiß wenig über die interne Funktionsweise. Hab zwar schon ein Tutorial darüber gelesen aber aus dem wurde ich nicht gerade schlau.

Was ich also suche wäre ein Tutorial wie man einen eigene Streams erstellt.

Ich bin über jede Hilfe dankbar.
(Suchfunktion hab ich auch schon benutzt, aber nur den teestream von virtual gefunden; und den Code versteh ich ohne Erklärung nicht bzw. kann davon nicht meinen eigenen herleiten)

MfG Sadrior

Dieser Post wurde am 01.11.2005 um 21:18 Uhr von Sadrior editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.11.2005, 23:27 Uhr
Spacelord
Hoffnungsloser Fall


Die eigentlich Arbeit erledigt der streambuffer der hinter den Stream Klassen steht.
Wenn du danach bei google suchst solltest du eigentlich einige brauchbare Ergebnisse bekommen.
Ohne mir es durchgelesen zu haben geht das hier anscheinend in die Richtung:
http://spec.winprog.org/streams/

Ansonsten registrier dich beim CUJ.In deren Archiv wirst du erschlagen mit Streamartikeln.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 01.11.2005 um 23:27 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.11.2005, 07:34 Uhr
Sadrior



Vielen Dank
Genau sowas hab ich gesucht.

Dieser Post wurde am 02.11.2005 um 07:35 Uhr von Sadrior editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.11.2005, 16:54 Uhr
Sadrior



Das Ausgeben über den Stream klappt super.
Beim Eingeben hab ich leider noch ein Problem.

Ich hab wie im Tutorial uflow und underflow für die Eingabe überladen:


Code:
        int sockstreambuffer::uflow()
        {
            char c=0;
            while(c != '\n')
            {
                ::recv(target.get(), &c, 1, 0);
                _inputbuffer.push_back(c);
            }
            _inputbuffer.push_back(c);
            _Gninc();
            c = *gptr();
            _GLength = _inputbuffer.end() - gptr();
            return c;
        }

        int sockstreambuffer::underflow()
        {
            if(gptr() && gptr() < egptr())
                return *_Gninc();
            _inputbuffer.clear();
            _inputbuffer.reserve(32);
            int c = uflow();
            _Gndec();
            return std::char_traits<char>::not_eof(c);
        }


(target ist eine Membervariable vom Typ meiner tcpsocket-Klasse, die Methode get() liefert die entsprechende SOCKET-Struktur zurück)

Ich hab durchs debuggen rausbekommen, dass er eine Exepction wirft ( nach c = *gptr()) und danach den stat auf ios_base::badbit setzt.
Der Debugger zeigt mir aber in uflow die richtigen Eingabe-Werte an.

Wenn ich versuche manuell per recv() im code Input auszulesen klappt alles wunderbar.

Hat jemand eine Idee was den Fehler veruhrsachen könnte?

Dieser Post wurde am 02.11.2005 um 16:56 Uhr von Sadrior editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: