[C++] Filetransfer via tcp protocol



  • Undertaker schrieb:

    geeky schrieb:

    Winsock selbst hat unabhängig vom TCP/IP-Stack auch nochmal Puffer (siehe z.B. setsockopt() und SO_RCVBUF...).

    das ist doch bestimmt der gleiche buffer, ansonsten wär's ja doppelt gemoppelt und mit unnötigen buffer-umschaufeleien verbunden...
    🙂

    msdn schrieb:

    SO_RCVBUF int Specifies the total per-socket buffer space reserved for receives. This is unrelated to SO_MAX_MSG_SIZE and does not necessarily correspond to the size of the TCP receive window.

    WinSock ist ja noch ne Schicht über TCP/IP und kann statt TCP/IP auch was anderes als drunterliegende Schicht nutzen. Von daher wird Buffer rumkopiererei eh nötig sein 😉



  • hmm also ich hab jetzt noch ein bisschen rumprobiert, jetzt läufts über netzwerk auch einwandfrei mit 32k buffer 🙂 falls jemand den code doch noch sehen möchte eventuell sagen...

    danke an alle,
    mfg
    mitos



  • Eieiei ist der Code schlecht. :kotz:



  • naja sowas kannst du dir echt sparen... wiealt bist du? 14? 😃
    Nehme konstruktive kritik allerdings gern an...
    mfg



  • Im Blocking-Modus wartet send immer bis alles weitergereicht wurde.

    Das ist das beobachtbare Verhalten, aber nicht das dokumentierte Verhalten.
    Wer sich nach beobachtbarem Verhalten richten möchte, und damit riskiert dass es irgendwann irgendwo nichtmehr geht... bittesehr. Ich richte mich nach der Doku.

    p.S.: falls es irgendwo im Kleingedruckten in der Doku stehen sollte würde es mich interessieren den entsprechenden Teil zu lesen, in dem Fall würde ich mich über nen Link/Hinweis freuen.



  • naja also er funktioniert jetzt doch nicht 😞 oft gehts oft nicht, exe dateien mag er überhaupt nicht gern verschicken...
    Hat niemand n tutorial bzw. ein projekt, da wos richtig gut funktioniert!?

    danke,
    mfg



  • geeky schrieb:

    Undertaker schrieb:

    geeky schrieb:

    Winsock selbst hat unabhängig vom TCP/IP-Stack auch nochmal Puffer (siehe z.B. setsockopt() und SO_RCVBUF...).

    das ist doch bestimmt der gleiche buffer, ansonsten wär's ja doppelt gemoppelt und mit unnötigen buffer-umschaufeleien verbunden...
    🙂

    msdn schrieb:

    SO_RCVBUF int Specifies the total per-socket buffer space reserved for receives. This is unrelated to SO_MAX_MSG_SIZE and does not necessarily correspond to the size of the TCP receive window.

    WinSock ist ja noch ne Schicht über TCP/IP und kann statt TCP/IP auch was anderes als drunterliegende Schicht nutzen. Von daher wird Buffer rumkopiererei eh nötig sein 😉

    klar, socket sind die benutzerstelle zu TCP, aber trotzdem glaube ich nicht, dass sockets und TCP getrennte buffer haben. was hätte das für einen sinn? es wird vielmehr so sein, dass ein socket seine buffer (für send und recv) verwaltet und TCP am anderen ende hängt und daten ausliest bzw. hineinschreibt.
    🙂



  • versuchs doch erst mal mit blocking sockets zu realisieren, ist einfacher zu durchblicken.



  • naja ich kenn mich bei den arten nicht so aus... was genau ist der blocking socket? bzw. wie kann ich ihn realisieren?



  • mitos, ich hab' dir schon gesagt was das Problem ist.
    Der letzte Code den du gepostet hast zeigt dass den den Hinweis ignoriert hast.
    Was willst du jetzt?
    Noch mehr Vorschläge die du dann nicht umsetzt?



  • ich habs versucht zu beachten...! allerdings gibt send() bei mir immer SOCKET_ERROR zurück, wenn ich übers internet verschicke und der buffer größer als 2000 ist.



  • hast du schon die doku von WSAAsyncSelect durchgelesen?



  • jo hab ich, http://msdn2.microsoft.com/en-us/library/ms741540.aspx
    ich versteh jetzt nicht genau auf was du hinauswillst... ich hab die funktion ja verwendet...


Anmelden zum Antworten