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.asp

    aber 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


Anmelden zum Antworten