WSASend nach TransmitFile umstellen
-
ich würde gern ne Funktion von nem Programm umstellen
und zwa möchte ich anstatt WSASend TransmitFile und TRANSMIT_FILE_BUFFERS
hier die jeweiligen MSDN einträge
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/transmit_file_buffers_2.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/transmitfile_2.aspaber irgendwie schein ich dafür zu blöd zu sein hab im netz auch leider nichts dazu gefunden was mir weiterhilft
dies ist meine funktion wie sie jetzt ist
int result; string szRequest; string szResponse; WSABUF Buffer; DWORD NumberOfBytesSent; DWORD dwBytesSent; if(!pGenericServer->ParseRequest(szRequest, szResponse)) { pGenericServer->CleanupThread(Event, s, pNewConn, GetCurrentThreadId()); return THREADEXIT_SUCCESS; } // // Sende Response zum Client // NumberOfBytesSent = 0; dwBytesSent = 0; do { Buffer.len = (szResponse.size() - dwBytesSent) >= SENDBLOCK ? SENDBLOCK : szResponse.size() - dwBytesSent; Buffer.buf = (char*)((DWORD)szResponse.c_str() + dwBytesSent); result = WSASend( s, &Buffer, 1, &NumberOfBytesSent, 0, 0, NULL); if(SOCKET_ERROR != result) dwBytesSent += NumberOfBytesSent; } while((dwBytesSent < szResponse.size()) && SOCKET_ERROR != result);nachdem ParseRequest(szRequest, szResponse) ausgeführt würde enthält szRequest den Dateinamen z.b. C:\Beispiel\Text.txt
szResponse enthält nen Header und darauf folgt der inhalt der Datei die in szRequest steht
mein Problem dabei ist das immer die Komplette Datei in den Arbeitspeicher geladen wird und der PC auf dem dieses Programm laufen soll verfügt eben nicht über sehr viel
daher möchte ich eben mit Transmit file arbeiten daher mein header soll dem Transmit file Buffers übergeben werden und danach mit transmitfile die datei gesendet werden. aber ich habe keinen Blassen schimmer wie ich das machen soll
-
machs doch