Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

1

26.05.2004, 19:48

unterschiede zwischen "cout" und "printf&quot

Hallo,

ich spiele gerade ein bisschen mit winsock rum.
ich schreibe gerade einen kleinen chat, als konsolenanwendung.
normalerweise gege ich text mit cout aus. allerding klappt das bei den "Blocking Calls" (wie z.b. listen) nicht.

mit cout:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
    result = listen(*s,10);

    if(result==SOCKET_ERROR)
    {
        cout << "Fehler: listen, fehler code: " << WSAGetLastError() << "\n";
        return 1;
    }
    else
    {
        cout << "acceptSocket ist im listen Modus....\n";
        return 0;
    }


mit printf:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
    // auf Verbindungen warten
    rc = listen(acceptSocket,10);

    if(rc==SOCKET_ERROR)
    {
        printf("Fehler: listen, fehler code: %d\n",WSAGetLastError());
        return 1;
    }
    else
    { 
        printf("acceptSocket ist im listen Modus....\n"); 
    }



mit printf bekomme ich (so wies sein sollte) die meldung: "acceptSocket ist im listen Modus...."
mit cout kommt allerdings gar keine meldung..... er wartet einfach auf eine verbindung, gibt aber nicht die meldung aus.
woran liegt das? hat das was mit streams zu tun, welche von cout benutzt werden?


mfg
dave

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

2

26.05.2004, 20:23

das liegt am return 0; das du bei std::cout vergessen hast.

Anonymous

unregistriert

3

26.05.2004, 20:39

versuchs doch mal mit

Quellcode

1
cout << "Hallo" << endl;


vielleicht liegt das immer noch im Buffer sonst und der wird erst geschrieben wenn voll o.ä.

oder mit

Quellcode

1
2
3
// flush() Leert den Ausgabepuffer, indem alle darin stehenden Zeichen 
//ausgegeben werden.  
cout.flush( );

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

4

27.05.2004, 21:19

mit endl klappts.
vielen dank.


was beweirkt das "endl"?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

27.05.2004, 21:22

einmal ein \n und einmal \flush

Werbeanzeige