Datei auslesen & verschicken.....

Hironymus

Grünschnabel
Also ich verstehe die Welt nicht mehr :-(.
Ich hab mich mal daran gemacht ein kleines Chattool zu proggen, was mehrere Benutzer zeitgleich nutzen können. Soweit so gut.
Jetzt wollte ich das Programm erweitern und eine Möglichkeit schaffen Dateitransfers machen zu können.

Mit Textdateien gehts... mit .exe files nicht, trotz dass ich die Datei Byteweise auslese..

Funktion onReceive()
Code:
BYTE* pBufD = new BYTE[1024];
iBufSize = 1024;
CString strErhalten;
iRcvd = ConnectSocketDatei.Receive(pBufD,iBufSize);
if (iRcvd == SOCKET_ERROR)
{
}
else
...
...
int Adress=3;
int Counter=0;
int Ende=iRcvd-3;
BYTE *Schreib_Buffer=new BYTE[iRcvd-3];
FILE *MyFile;
MyFile=fopen(m_Pfad_Speichern,"a+b");
Information_umkopieren(&pBufD[0],&Schreib_Buffer[0]); // eine 3 Byte große Information wird mitgesendet, um zu signalisieren, was gemacht werden soll, die soll natürlich nicht geschrieben werden.
fwrite(Schreib_Buffer,sizeof(BYTE),iRcvd-3,MyFile); // Die Übermittelte Information in die Datei schreiben 
ConnectSocketDatei.Send(LPCTSTR("##OK"),4); // OK zurücksenden
fclose(MyFile);

Funktion Information_umkopieren:

Code:
void CMultichatDlg::Information_umkopieren(BYTE* Empfang, BYTE* Schreiben)
{
// Vor der eigentlichen Information befindet sich immer ein Statuswort
// beginnend mit "## + Zahlencode". Die übermittelten Zeichen, der eigentlichen Information (Empfang) werden
// isoliert und in Schreiben gespeichert.
int Zaehler_Empfang=3;
int Zaehler_Schreiben=0;
while (Empfang[Zaehler_Empfang]!=NULL)
      {
        Schreiben[Zaehler_Schreiben]=Empfang[Zaehler_Empfang];
	Zaehler_Schreiben++;
	Zaehler_Empfang++;
      }
}

Sorry wegen der langen Listnings, aber so ists einfacher, den Fehler zu finden.
Beim Empfänger kommt die korrekte Zeichenzahl an, allerdings hat diese mit der Quelle nix mehr zu tun.

Normale Textdateien werden problemlos übermittelt.

Weiß einer von euch einen Rat?

Danke!
 
Zuletzt bearbeitet:
Kannst Du die Schnipsel nochmal vernünftig formatiert schicken?

Musst Du
[CODE ] hier dein code [* CODE]
verwenden (und dabei das * durch ein / ersetzen!)
 

Neue Beiträge

Zurück