Netzwerk Anwendung mit send() und recv()

  • Themenstarter Themenstarter MrCodeMaster
  • Beginndatum Beginndatum
Danke hat sich aber schon gelöst und zwar war mein char zu klein ich hab nur char [1] gehabt und deswegen hat es Probleme mit dem Stack gegeben.
 
Nachdem ihr mir ja so gut geholfen habt habe ich jetzt noch eine Frage.

Und zwar möchte ich einen ganzen Befehl wie z.B.: dir einlesen bis er zum Terminierungszeichen \0 kommt und dann diesen Befehl senden aber bei mir funktioniert das nicht was mach ich falsch****

Hier noch mal mein Code:
Code:
out << "Bitte geben Sie den Befehl ein: ";
  while(cDaten[0] != EOF)
  {
  cDaten[0] = getchar();
  }
  

  if (cDaten[0] == '5')
  {
	  cout << "Server und Client werden beendet....\n\a";
	  
	  iErgebnis_SendenEmpfangen = send(s, cDaten, sizeof(cDaten), 0);
		if ( iErgebnis_SendenEmpfangen < 0)
			{
				cout << "Fehler beim Senden des Befehls!!\n";
				system("PAUSE");
			}
	 
	 return 0;
  }
  else
  {
	iErgebnis_SendenEmpfangen = send(s, cDaten, sizeof(cDaten), 0);
		if ( iErgebnis_SendenEmpfangen < 0)
			{
				cout << "Fehler beim Senden des Befehls!!\n";
				system("PAUSE");
			}
		else
			{
				cout << cDaten << endl;
				goto SENDEN;
	  
			}
  }
}
 
Du willst ja dann, wenn du "dir" senden willst, auf ein char-Array, 3 Zeichen schreiben. Das geht natürlich nicht. Du musst die Eingabe einfach allgemein cDaten zuweisen. Müsstest des [0] weglassen. Musst aber dann eine andere Varriante nehmen um die Eingabe einzulesen, da getchar() einen int-Wert zurückliefert. Und cDaten, muss natürlich auch groß genug sein :-).

grüße
 
Ich hab schon lang nicht mehr in der Konsole programmiert, aber fürher hab ich Zeicheneingaben so eingelesen:

Code:
string stEingabe;

cout << "Bitte geben sie etwas ein: " << flush;
cin >> stEingabe;

Dann hast du deine Eingabe in einer string-Varriable drin.
Wenn du die jetzt versenden willst, musst du die in eine char-Varriable umschreiben:

Code:
string stEingabe;
char cEingabe[1024];

strcpy(cEingabe, stEingabe.c_str());

Damit sollte es funktionieren...

grüße
 
Ich habe das jetzt mal so gemacht wie du gesagt hast aber er lässt mich den string nicht einlesen.

Er sagt immer Kein ">>" - Operator stimmt mit diesem Operanden überein.

Was hab ich falsch gemacht?

Hier mein Code:
Code:
cout << "Bitte geben Sie den Befehl ein: " << flush;
   string d;
   
   cin >> d;  

  strcpy(strcpy(cDaten, d.c_str()));
 
Also ich hab mal deinen geposteten Code bei mir kompilieren lassen und es hat ohne Probleme geklappt. Bis auf das, dass du 2x strcpy() ineinander geschrieben hast.

grüße
 
Danke weiß auch schon was ich falsch gemacht habe. Hab die biblithek string nicht eingebunden. Dumm von mir geht jetzt aber alles wunderbar.
 
Kannst du mir noch erklären, wie ich die Ausgabe von der CMD in eine Datei umleiten kann****

Wenn ich z.B.: den Befehl dir verwende und dann diese ausgabe in eine Datei umleiten.

Ich bin auf WinAPI gestoßen und dachte mir du bist genau der richtige ansprechpartner
 
Hi

Den Dateinamen (und ggf. Pfad) mit > am Schluss des Befehls dazuschreiben.
Beispiel:
Code:
dir *.txt >Ausgabe.txt

Wenn du stderr umleiten willst: 2> statt >
1> wäre wieder das normale stdout.

Das hat übrigens eher wenig mit der Winapi zu tun.

Gruß
 
Zurück