Netzwerk Anwendung mit send() und recv()

  • Themenstarter Themenstarter MrCodeMaster
  • Beginndatum Beginndatum
Ich stell jetzt noch mal den Codeausschnitt rein!

Server:
Code:
else if (cDaten[0] == '1')
	  {
		  
		  cout << cDaten << "\n";
		  system("dir > log.txt");

		cDaten[0]='d';
		
		iErgebnis_SendenEmpfangen = send(acceptSocket, cDaten, sizeof(cDaten), 0);
			
			if (iErgebnis_SendenEmpfangen < 0)
				{
					cout << "Fehler beim Senden des Streams!!\n";
					system("PAUSE");
					goto EMPFANGEN;
				}

		goto EMPFANGEN;
	  }

Client:
Code:
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;

				iErgebnis_SendenEmpfangen = recv(s, cDaten, sizeof(cDaten),0);
				
				if ( iErgebnis_SendenEmpfangen == -1)
					{
						cout << "Fehler beim Empfangen der Daten!!\n\a\a\a";
						system("PAUSE");
					}
				goto SENDEN;
	  
			}

Was mach ich falsch?
 
Du musst im Server deinen ConnectedSocket nehemen. Den Socket, den du über die accept()-Funktion bekommst. Mit dem sendest du in deinem Server, dem Client die Daten und empängst sie auch nur über diesen Socket. Im Client sendest und empfängst du die Daten über deinen Socket s, den du auch nimmst, um mit dem Server eine Verbindung aufzubauen. Den acceptSocket im Server, brauchst du NUR um Verbindungen anzunehmen, sonst nicht. Du sendest über den acceptSocket NIE Daten an Clients.

grüße
 
Danke hab meinen Fehler schon selber herrausgefunden jetzt muss ich noch fragen wrum ich den eingelesen String von meiner datei nicht über netzwerk senden kann?

Ich hab ihn mit strcpy in eine neu Char Variable kopiert aber es funktioniert trotzdem nicht warum?
 
Ohne Code können wir nichts machen. Wir wissen ja nicht,
1. wie du die Datei einliest
2. in welchem String der Inhalt steht
3. wie du den String senden möchtest
4. wie du den String in die char-Varriable genau kopierst

Die Fehler können an vielen verschiedenen Stellen liegen

grüße
 
Sorry hier der Code:
Code:
string text1;
		  ifstream file;

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

		  while(!file.eof())
		  {
			  getline(file,text1);

			  
		
			 
		  }

		  fflush(stdin);

		  char cDaten_neu[5000];
		  
		  strcpy(cDaten_neu, text1.c_str());
		  
		  cout << cDaten_neu << endl;
		 
		
		iErgebnis_SendenEmpfangen = send(connectedSocket, cDaten_neu, sizeof(cDaten_neu), 0);
			
			if (iErgebnis_SendenEmpfangen < 0)
				{
					cout << "Fehler beim Senden des Streams!!\n";
					system("PAUSE");
					goto EMPFANGEN;
				}

		goto EMPFANGEN;
 
Steht in den cDaten_neu, die du dir anzeigen lässt, etwas drin? Liest der die Datei richtig ein?
Bringt er beim Senden einen Fehler, oder empfängst du einfach nur nichts?
 
Ich will in cDaten_neu das hineinkopieren was in text1 steht und ja er liest richtig es kommt bei meinem client nur nichts an.
 
Wie empfängst du bei deinem Client dann? Das kopieren und senden passt an sich. Steht dein Client auch genau an der recv-Stelle, wenn du im Server grad was senden willst?
 
hier mein client:

Code:
else
			{
				cout << cDaten << endl;
				char cDaten_neu[5000];
				iErgebnis_SendenEmpfangen = recv(s, cDaten_neu, sizeof(cDaten_neu),0);
				

				
				cout <<"Server: " <<cDaten_neu << endl;
				
				if ( iErgebnis_SendenEmpfangen == -1)
					{
						cout << "Fehler beim Empfangen der Daten!!\n\a\a\a";
						system("PAUSE");
						goto SENDEN;
					}
				goto SENDEN;
 
Zurück