file versenden
-
Lies das File häppchenweise in den Speicher, versende die Häppchen und setze es drüben wieder zusammen.
-
Mir ist gerade noch eingefallen du benutzt wohl besser WinInet. Damit gehts viel einfacher

Google: site:msdn.microsoft.com WinInet
MfG,
*Ranner*
-
-
ich leses jetzt in einzelnen stücken aus
while(gelesen=fread(upload,1,500,tranffile) > 0) { printf("ANFANG DURCHGANG\n"); send(sock, upload, strlen(upload), 0); printf("\n\n%s <- %d\n\n",upload,strlen(upload)); strcpy(upload,""); printf("%s<- upload\n",upload); }aber leider hört fread nicht mehr richtig auf ,es speichert noch einen teil vom anfang des files in den schluss

-
:schland: :schland: :schland: Warum benutzt du strlen? da musst du "gelesen" einsetzen. :schland: :schland: :schland:
-
Benutze:
button ausprobierer schrieb:
MfG,
:schland: *Ranner* :schland:
-
:schland: Benutze lieber nicht TransmitFile das funktioniert nicht auf Windows 98 und Linux. :schland:
-
So wie ich das verstanden hab suchst du n Algo, mit dem du ne Datei verschicken kannst.
Also:
#include <winsock2.h> #include <fstream> using namespace std; #define BUFSIZE 1024 // variabel ... // Das ganze Socket-Zeugs int iRueckgabe; // Rückgabewert von send(...) int iBytes; // Anzahl gesendeter Bytes char buf[BUFSIZE]; char *sendBuf; ifstream dl("file", ios::binary); while(!dl.eof()) { memset(buf, '\0', BUFSIZE); // Buffer leeren dl.read(buf, BUFSIZE); // Aus Datei lesen iBytes = 0; sendBuf = buf; do { // Wird benötigt, falls buf nicht vollständig gesendet wurde. sendBuf = buf; sendBuf += iBytes; // gesendete Bytes nicht noch einmal senden ! iRueckgabe = send(socket, sendBuf, (BUFSIZE-iBytes), 0); if(iRueckgabe == SOCKET_ERROR) return -1; else if(iRueckgabe != (BUFSIZE-iBytes)) iBytes += iRueckgabe; } while(iRueckgabe != (BUFSIZE-iBytes)); } dl.close();Ich weiß, is nicht die schönste Lösugen, aber funktioniert.
Ich benutz diesen Algo in all meinen Servern.
Falls es Fragen gibt, sag einfach Bescheid.Gruß TheImaginator
-
nöö schrieb:
:schland: Benutze lieber nicht TransmitFile das funktioniert nicht auf Windows 98 und Linux. :schland:
Welche Pfeife benutzt heutzutage bitte Windows 98? Ist kein Argument. Und wen interessiert Linux? Richtig, niemanden.
MfG,
:schland: *Ranner* :schland:
-
Ranner schrieb:
nöö schrieb:
:schland: Benutze lieber nicht TransmitFile das funktioniert nicht auf Windows 98 und Linux. :schland:
Welche Pfeife benutzt heutzutage bitte Windows 98? Ist kein Argument. Und wen interessiert Linux? Richtig, niemanden.
MfG,
:schland: *Ranner* :schland:Sorry, aber Leute die heutzutage noch Linux ignorieren, sind meiner Meinung nach "Pfeifen".
Linux hat Windoof einiges voraus!
Da wir hier aber in nem WinAPI-Forum sind, empfehle ich dir auch TransmitFile, da du glaub ich kaum Win-98-User mit deinem Programm ansprechen willst, oder?Gruß TheImaginator
-
So meinte ich es ja auch

MfG,
:schland: *Ranner* :schland:
-
TransmitFile ist auf Client Betriebssystemen eingeschränkt. Es können nur 2 TransmitFile Aufrufe gleichzeitig ausgeführt werden. Also nix für Server die man unter normalem Windows XP ausführen will.