do(zeichen ausgeben) while(winsock is connecting..)



  • Hi,

    bin grad am überlegen wie ich das lösen könnte...
    mit der winsock lib und connect(socket,...) verbinde ich mich mit einem server..

    die connect funktion führe ich wenn ein fehler auftritt erneut auf (insgesamt 5x).. weil es server gibt die einfach ausgelastet sind und nicht gleich auf ein connect reagieren...

    nun möchte ich während dem versuch zu connecten ein text ausgeben..
    do{connect=(socket,...)} while{connect != false} funktioniert ja nicht da er connect immer und immer wieder hintereinander ausführt ohne zu warten dass die funktion beendet ist und ein rückgabewert liefert, oder?

    oder wartet do hier bis die funktion einen rückgabewert liefert?

    dann wäre aber das problem das ich in der do schleife keine zeichen ausgeben kann.. (weil ja connect schon läuft..)

    oder bin ich mit do while hier auf dem völlig falschen dampfer?



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • connect ist ein sogenannter blocking call. Das Programm wartet bis connect abgeschlossen ist. Du hast also so keine Chance etwas auszugeben. Es sei denn, du setzt den Socket auf non-blocking und überprüfst mit select in regelmäßigen Intervallen, ob der Vorgang abgeschlosen ist.



  • mhhh schade 😕 dachte das blocking oder non-blocking steht für die verbindung nicht das programm ^^

    naja.. non-blocking kommt nicht in frage... dann gibts halt kein schickes wartezeichen *g

    dank dir



  • Multithreading könnte vlt. helfen



  • non-blocking kommt nicht in frage

    Warum nicht?



  • und überprüfst mit select in regelmäßigen Intervallen, ob der Vorgang abgeschlosen ist.

    nur damit ich son schönes wartezeichen hab ist das eigentl schon zuviel aufwand..

    wenn ich das mache dann wenn ich die server gleichzeitg abfrage.. (also mit threads).. hier bräuchte ich ja non-blocking... aber das steht erstmal hinten an



  • Sollte doch eigentlich mit WSAConnect(..) gehen:
    http://msdn.microsoft.com/en-us/library/ms741559(VS.85).aspx

    Natürlich mit einem non-blocking Socket.

    Simon



  • war das auf mehrere server gleichzeitig abfragen?

    naja ich muss ja auch noch die daten auswerten und abspeichern... da scheint es mir am sinnvollsten wenn ich nen thread aufmache und sämtliche dinge da reinpakce (mysql verbindung muss da dann auch seperat geöffnet werden.. sonst machts bumm)

    aber erstmal.. reicht eine abfrage nacheinander vollkommen aus.... eigentl. auch in zukunft.. seh ich dann ^^


Anmelden zum Antworten