Netzwerk Anwendung mit send() und recv()

  • Themenstarter Themenstarter MrCodeMaster
  • Beginndatum Beginndatum
Auf Anhieb kann ich jetzt grad keinen Fehler erkennen, außer dass vllt die Überprüfung vom Empfangen der Daten, vor die Anzeige sollte. Vllt sieht noch jemand anders einen Fehler.

grüße
 
Kann es vlt daran liegen, dass ich einen String in einen Char kopiernen will ?

Weil wenn ich einen vordefienierten Buchstaben cDaten_neu gebe kommt der auch ann
 
Wenn in cDaten_neu etwas drin steht, egal ob vordefiniert oder aus einem string kopiert, dann sollte das auch ankommen. Steht in deiner string Varriable text1 auch wiklich was drin?
 
Ja ganz sicher ich habe es nämlich vorher ausgeben lassen. es steht die ausgabe von FindFirstFile().
 
du kannst dir ja mal die anzahl der empfangenen Bytes auf der Serverseite ausgeben lassen.

Also Servercode nach rcv
Code:
 cout <<"Anzahl Bytes" << iErgebnis_SendenEmpfangen <<endl;

und dann die anzahl der bytes die du vom clienten verschickst:

und client code nach send erweitern...
Code:
 cout <<"Anzahl Bytes" << iErgebnis_SendenEmpfangen <<endl;

du könntest das ja auch in einer if-abfrage behandeln(bei send).
Code:
if(iErgebnis_SendenEmpfangen != sizeof(cDaten)) {cout << "Fehler"}  )
 
Wenn du große Datenmengen senden willst, musst du dies eh in einer while()-Schleife machen, da die Funktion send() nicht immer gleich alles sendet, sondern nur so viel, wie grad geht. Das kann jedesmal anders sein.

C++:
iDaten_gesendet = 0;  //gesendete Bytes

while(iDaten_gesendet != iDateigroesse)  //So lange senden, bis die gesendeten Bytes, der Dateigröße entsprechen, die man senden möchte
{
    iErgebnis_SendenEmpfangen = send(Socket, cDaten + iDaten_gesendet, iDateigroesse - iDaten_gesendet, 0);
    
    if(iErgebnis_SendenEmpfangen == -1)
    {
        MessageBox(NULL, "Beim senden ist ein Fehler aufgetreten.", "Fehler", MB_ICONERROR | MB_OK | MB_DEFBUTTON1);
        
        break;
    }
    else
    {
        iDaten_gesendet = iDaten_gesendet + iErgebnis_SendenEmpfangen;
    }
}

grüße
 
Für recv gilt übrigens das Gleiche.
Es wird min. 1 Byte empfangen und maximal die angegebene Größe, dazwischen kanns aber variieren.
 
Danke Leute für eure Hilfe beim senden nur ich glaube,dass ich meinen Fehler gefunden habe.

In meiner Variable cDaten_neu steht nur solange etwas drinn solange ich sie in der Datei öffnen Funktion habe ich stell die Funktin mal rein hoffentlich könnt ihr mir helfen.

Code:
string text1;
		  ifstream file;

		  file.open("log.txt", ios::in);

		  while(!file.eof())
		  {
			  
			  getline(file,text1);
			  strcpy(cDaten_neu, text1.c_str());
			  cout << cDaten_neu << endl; //hier gibt er den Inhalt der Variable noch aus aber wenn ich die Variable nach den Klammer ausgeben lassen will geht das nicht mehr.
			
			  
			 
		  }
 
Was erwartest du?
Du überschreibst die Variable ja immer wieder.

Ich glaube, um dir effektiv helfen zu können ist einmal der komplette Code erforderlich.
Erstens verwirren diese ganzen losen Codeschnisel langsam,
zweitens finden wir dann hier wahrscheinlich noch andere Fehler, die du noch gar nicht bemerkt hast.
 
Zurück