<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Winsock2 ungewöhnliche Ausgaben nach Datenversand!]]></title><description><![CDATA[<p>Hallo liebe Community!</p>
<p>Ich programmiere gerade etwas mit WinSock und will gerade den Grundstein für eine etwas aufwendige Anwendung legen!</p>
<p>Allerdings bin ich auf ein Problem gestoßen!<br />
Also ich verwende WinSock2 und versende Daten über TCP die aus einer Datei glesen werden und auf einem anderen Computer in eine Datei geschrieben werden!</p>
<p>Allerdings produzieren die Programme unsinnige Ausgaben!</p>
<p>Hier die Quelltexte des Servers sowie Clienten:</p>
<p>Server:(empfängt Daten)</p>
<pre><code>#include &lt;windows.h&gt;
#include &lt;winsock2.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

int startWinsock(void);

int main()
{

	long rc;
	SOCKET acceptSocket;
	SOCKADDR_IN addr;
	SOCKET connectedSocket;
	FILE *f;
	char daten[2048];

	rc= startWinsock();

	if(rc != 0)
		{
			printf(&quot;Fehler: startWinsock(); Fehler-Code: %d\n&quot;, rc);

			return 1;
	}

	else
		printf(&quot;WinSock gestartet!\n&quot;);

	 acceptSocket = socket(AF_INET, SOCK_STREAM, 0);

	 if(acceptSocket == INVALID_SOCKET)
		 {
			 printf(&quot;Fehler der Socket konnte nicht erstellt werden!\n&quot;);
			 printf(&quot;Fehler-Code: %d\n&quot;, WSAGetLastError());
			 return 1;
	     }

	 else
		 printf(&quot;Socket wurde erstellt!\n&quot;);

	 memset(&amp;addr, 0, sizeof(SOCKADDR_IN));
	 addr.sin_family = AF_INET;
	 addr.sin_port = htons(9999);
	 addr.sin_addr.s_addr = ADDR_ANY;

	 rc= bind(acceptSocket, (SOCKADDR*)&amp;addr, sizeof(SOCKADDR_IN));

	 if(rc == SOCKET_ERROR)
		 {
			 printf(&quot;Fehler bind(); Fehler-Code: %d\n&quot;, WSAGetLastError());
			 return 1;
		 }

	 else
		 printf(&quot;Socket an Port: 9999 gebunden!\n&quot;);

	 rc= listen(acceptSocket, 10);

	 if(rc == SOCKET_ERROR)
		 {
			 printf(&quot;Fehler listen(); Fehler-Code: %d\n!&quot;, WSAGetLastError());
			 return 1;
	     }

	 else
		 printf(&quot;Listen(); gestartet!\n&quot;);

	 connectedSocket= accept(acceptSocket, NULL, NULL);

	 if(connectedSocket == INVALID_SOCKET)
		 {
			 printf(&quot;Fehler: accept(); Fehler-Code: %d!\n&quot;, WSAGetLastError());
			 return 1;
		 }

	 else
		 printf(&quot;Neue Verbindung wurde akzeptiert!\n&quot;);

     rc= recv(acceptSocket, daten, sizeof(daten), 0);

	 f = fopen(&quot;FromServer.txt&quot;, &quot;w&quot;);

	 fputs(daten, f);

     system(&quot;PAUSE&quot;);

	 return 0;

}

int startWinsock(void)

{

  WSADATA wsa;

  return WSAStartup(MAKEWORD(2,0),&amp;wsa);

}
</code></pre>
<p>Client:(versendet Daten)</p>
<pre><code>#include &lt;windows.h&gt;
#include &lt;winsock2.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

//Prototypen

int startWinsock(void)

{

  WSADATA wsa;

  return WSAStartup(MAKEWORD(2,0),&amp;wsa);

}

int main()

{

  long rc;
  SOCKET s;
  SOCKADDR_IN addr;

  FILE *f;
  char file_name[255];
  char daten[2048];

  rc=startWinsock();

  if(rc!=0)

  {

    printf(&quot;Fehler: startWinsock, fehler code: %d\n&quot;,rc);

    return 1;

  }

  else

  {

    printf(&quot;Winsock gestartet!\n&quot;);

  }

  s=socket(AF_INET, SOCK_STREAM, 0);

  if(s == INVALID_SOCKET)
      {
          printf(&quot;Der Socket konnt nicht erstellt werden:\n&quot;);
          printf(&quot;Fehler-Code: %d\n&quot;, WSAGetLastError());
          return 1;
      }

  else
      {
          printf(&quot;Socket erstellt!\n&quot;);
      }

  memset(&amp;addr,0,sizeof(SOCKADDR_IN));

  addr.sin_family = AF_INET;
  addr.sin_port = htons(9999);
  addr.sin_addr.s_addr = inet_addr(&quot;127.0.0.1&quot;);

  rc= connect(s, (SOCKADDR*)&amp;addr, sizeof(SOCKADDR));

  if(rc==SOCKET_ERROR)

{

  printf(&quot;Fehler: connect gescheitert, fehler code: %d\n&quot;,WSAGetLastError());
  system(&quot;PAUSE&quot;);
  return 1;

}

else

{

  printf(&quot;Verbunden mit 127.0.0.1..\n&quot;);

}

  printf(&quot;Welche Datei wollen Sie versenden: \n&quot;);
  scanf(&quot;%s&quot;, file_name);

  f = fopen(file_name, &quot;r&quot;);

  if(f == NULL)
      {
          printf(&quot;Fehler beim Lesen!\n&quot;);
          exit(0);
      }

  else
      {
          while( fgets(daten, sizeof(daten), f) != 0)
              {
              rc = send(s, daten, sizeof(daten), 0);
              }
      }

  system(&quot;PAUSE&quot;);

  return 0;

}
</code></pre>
<p>Die Ausgaben sind allenfalls kyrillisch, vielleicht kennt ein Programmieren mit Winsock Erfahrung das Problem?</p>
<p>Danke im Vorraus!</p>
<p>EOF</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/219725/winsock2-ungewöhnliche-ausgaben-nach-datenversand</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Apr 2026 07:24:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/219725.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Aug 2008 18:39:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Wed, 06 Aug 2008 18:39:48 GMT]]></title><description><![CDATA[<p>Hallo liebe Community!</p>
<p>Ich programmiere gerade etwas mit WinSock und will gerade den Grundstein für eine etwas aufwendige Anwendung legen!</p>
<p>Allerdings bin ich auf ein Problem gestoßen!<br />
Also ich verwende WinSock2 und versende Daten über TCP die aus einer Datei glesen werden und auf einem anderen Computer in eine Datei geschrieben werden!</p>
<p>Allerdings produzieren die Programme unsinnige Ausgaben!</p>
<p>Hier die Quelltexte des Servers sowie Clienten:</p>
<p>Server:(empfängt Daten)</p>
<pre><code>#include &lt;windows.h&gt;
#include &lt;winsock2.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

int startWinsock(void);

int main()
{

	long rc;
	SOCKET acceptSocket;
	SOCKADDR_IN addr;
	SOCKET connectedSocket;
	FILE *f;
	char daten[2048];

	rc= startWinsock();

	if(rc != 0)
		{
			printf(&quot;Fehler: startWinsock(); Fehler-Code: %d\n&quot;, rc);

			return 1;
	}

	else
		printf(&quot;WinSock gestartet!\n&quot;);

	 acceptSocket = socket(AF_INET, SOCK_STREAM, 0);

	 if(acceptSocket == INVALID_SOCKET)
		 {
			 printf(&quot;Fehler der Socket konnte nicht erstellt werden!\n&quot;);
			 printf(&quot;Fehler-Code: %d\n&quot;, WSAGetLastError());
			 return 1;
	     }

	 else
		 printf(&quot;Socket wurde erstellt!\n&quot;);

	 memset(&amp;addr, 0, sizeof(SOCKADDR_IN));
	 addr.sin_family = AF_INET;
	 addr.sin_port = htons(9999);
	 addr.sin_addr.s_addr = ADDR_ANY;

	 rc= bind(acceptSocket, (SOCKADDR*)&amp;addr, sizeof(SOCKADDR_IN));

	 if(rc == SOCKET_ERROR)
		 {
			 printf(&quot;Fehler bind(); Fehler-Code: %d\n&quot;, WSAGetLastError());
			 return 1;
		 }

	 else
		 printf(&quot;Socket an Port: 9999 gebunden!\n&quot;);

	 rc= listen(acceptSocket, 10);

	 if(rc == SOCKET_ERROR)
		 {
			 printf(&quot;Fehler listen(); Fehler-Code: %d\n!&quot;, WSAGetLastError());
			 return 1;
	     }

	 else
		 printf(&quot;Listen(); gestartet!\n&quot;);

	 connectedSocket= accept(acceptSocket, NULL, NULL);

	 if(connectedSocket == INVALID_SOCKET)
		 {
			 printf(&quot;Fehler: accept(); Fehler-Code: %d!\n&quot;, WSAGetLastError());
			 return 1;
		 }

	 else
		 printf(&quot;Neue Verbindung wurde akzeptiert!\n&quot;);

     rc= recv(acceptSocket, daten, sizeof(daten), 0);

	 f = fopen(&quot;FromServer.txt&quot;, &quot;w&quot;);

	 fputs(daten, f);

     system(&quot;PAUSE&quot;);

	 return 0;

}

int startWinsock(void)

{

  WSADATA wsa;

  return WSAStartup(MAKEWORD(2,0),&amp;wsa);

}
</code></pre>
<p>Client:(versendet Daten)</p>
<pre><code>#include &lt;windows.h&gt;
#include &lt;winsock2.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

//Prototypen

int startWinsock(void)

{

  WSADATA wsa;

  return WSAStartup(MAKEWORD(2,0),&amp;wsa);

}

int main()

{

  long rc;
  SOCKET s;
  SOCKADDR_IN addr;

  FILE *f;
  char file_name[255];
  char daten[2048];

  rc=startWinsock();

  if(rc!=0)

  {

    printf(&quot;Fehler: startWinsock, fehler code: %d\n&quot;,rc);

    return 1;

  }

  else

  {

    printf(&quot;Winsock gestartet!\n&quot;);

  }

  s=socket(AF_INET, SOCK_STREAM, 0);

  if(s == INVALID_SOCKET)
      {
          printf(&quot;Der Socket konnt nicht erstellt werden:\n&quot;);
          printf(&quot;Fehler-Code: %d\n&quot;, WSAGetLastError());
          return 1;
      }

  else
      {
          printf(&quot;Socket erstellt!\n&quot;);
      }

  memset(&amp;addr,0,sizeof(SOCKADDR_IN));

  addr.sin_family = AF_INET;
  addr.sin_port = htons(9999);
  addr.sin_addr.s_addr = inet_addr(&quot;127.0.0.1&quot;);

  rc= connect(s, (SOCKADDR*)&amp;addr, sizeof(SOCKADDR));

  if(rc==SOCKET_ERROR)

{

  printf(&quot;Fehler: connect gescheitert, fehler code: %d\n&quot;,WSAGetLastError());
  system(&quot;PAUSE&quot;);
  return 1;

}

else

{

  printf(&quot;Verbunden mit 127.0.0.1..\n&quot;);

}

  printf(&quot;Welche Datei wollen Sie versenden: \n&quot;);
  scanf(&quot;%s&quot;, file_name);

  f = fopen(file_name, &quot;r&quot;);

  if(f == NULL)
      {
          printf(&quot;Fehler beim Lesen!\n&quot;);
          exit(0);
      }

  else
      {
          while( fgets(daten, sizeof(daten), f) != 0)
              {
              rc = send(s, daten, sizeof(daten), 0);
              }
      }

  system(&quot;PAUSE&quot;);

  return 0;

}
</code></pre>
<p>Die Ausgaben sind allenfalls kyrillisch, vielleicht kennt ein Programmieren mit Winsock Erfahrung das Problem?</p>
<p>Danke im Vorraus!</p>
<p>EOF</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560415</guid><dc:creator><![CDATA[LØRdSe]]></dc:creator><pubDate>Wed, 06 Aug 2008 18:39:48 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Thu, 07 Aug 2008 22:26:29 GMT]]></title><description><![CDATA[<p>*wiederbeleb*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561187</guid><dc:creator><![CDATA[LØRdSe]]></dc:creator><pubDate>Thu, 07 Aug 2008 22:26:29 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 00:47:38 GMT]]></title><description><![CDATA[<p>Zwei Sachen beim überfliegen: Überprüf beim Server mal den Rückgabewert von &quot;recv&quot;. Wenn gesendet wird, kann es sein, dass erst nur die Hälfte ankommt und der Rest später. Zweitens: &quot;fputs&quot; erwartet einen String. Ich weiß nicht, welche Daten du rüberschickst, aber sie sind so wahrscheinlich nicht null-terminiert oder könnten eine null mittendrin enthalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561204</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 08 Aug 2008 00:47:38 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 07:24:45 GMT]]></title><description><![CDATA[<p>Also ich hab den Read-Modus für die Datei, jetzt zusätzlich auf Binär gesetzt!</p>
<pre><code class="language-cpp">f = fopen(file_name, &quot;rb&quot;);
</code></pre>
<p>Das hat nichts gebracht gleiche Ausgaben!</p>
<p>Dann habe ich den Rückgabewert der Funktion send(); überprüft,aslo in rc steht 4!<br />
Dann habe ich die Größe der Datei, welche in der Struktur dataStat steht undmit dataStat.st_size abgefragt wird überprüft : 16!</p>
<pre><code class="language-cpp">printf(&quot;Rückgabewert: %d\n&quot;, rc);
  printf(&quot;Dateigröße: %d\n&quot;, dataStat.st_size);
</code></pre>
<p>In dein Eigenschaften der Datei steht:</p>
<p>Größe: 16 Bytes</p>
<p>Größe auf Datenträger 4,00 KB(4.096 Bytes)</p>
<p>Erklärmir einer das Problem, bitte!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561251</guid><dc:creator><![CDATA[LØRdSe]]></dc:creator><pubDate>Fri, 08 Aug 2008 07:24:45 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 10:56:33 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char daten[2048];
...
while( fgets(daten, sizeof(daten), f) != 0)
{
    rc = send(s, daten, sizeof(daten), 0);
}
</code></pre>
<p>Deine Datei ist 16 Bytes groß und du schickst 2048 - woher soll der Server wissen, wie groß die Datei ist, bzw welche der 2048 (oder mehr) Bytes zu der Datei gehören? Du könntest entweder die Dateigröße vorneweg schicken und/oder nur den tatsächlichen Datei-Inhalt verschicken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561362</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 08 Aug 2008 10:56:33 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 11:06:46 GMT]]></title><description><![CDATA[<p>Ich habe den Speicher (das habe ich vergessen zu erwähnen) dynamisch zugewiesen:</p>
<pre><code class="language-cpp">char *daten = NULL;
</code></pre>
<p>Ich habe jetzt eine andere Methode versucht:</p>
<p>Zum Versenden:</p>
<pre><code class="language-cpp">{

		  char *daten = NULL;

          stat(file_name, &amp;dataStat);
		  daten = malloc(dataStat.st_size);

		  while( read(handle, daten, sizeof(dataStat.st_size)) != 0)
			  {
		      printf(&quot;Daten[]: %s!\n&quot;, daten);
			  rc = send(s, daten, sizeof(daten), 0);
			  }
	  }
</code></pre>
<p>Folgendes Ergebnis bekomme ich in der Variable daten:</p>
<blockquote>
<p>Daten[]: Tomx<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/263a.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face"
      title=":smiling_face:"
      alt="☺"
    />¶!<br />
Daten[]: istx<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/263a.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face"
      title=":smiling_face:"
      alt="☺"
    />¶!<br />
Daten[]: schx<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/263a.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face"
      title=":smiling_face:"
      alt="☺"
    />¶!<br />
Daten[]: wul!x<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/263a.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face"
      title=":smiling_face:"
      alt="☺"
    />¶!</p>
</blockquote>
<p>Die Original Zichenkett in der Originaldatei, welche eine Textdatei ist, lautet:<br />
[/quote]Tom ist schwul![/quote]</p>
<p>Zum empfangen habe ich folgenden Source geschrieben:</p>
<pre><code class="language-cpp">rc= recv(acceptSocket, daten, sizeof(daten), 0);
	 printf(&quot;Daten[]: %s!\n&quot;, daten);

	 handle = open(&quot;FromServer.txt&quot;, O_BINARY|O_CREAT);

	 write(handle, &amp;daten, sizeof(daten));
</code></pre>
<p>Wenn ich die Daten im Server ausgebe erhalte ich allerdings nur noch folgenden Zeichenkette:</p>
<blockquote>
<p>(null)</p>
</blockquote>
<p>Mein anliegen ist es jede Datei jedes beliebigen Datentyps so zu verschicken das sie Original auf einem anderem Rechner reproduziert wird!</p>
<p>Allerdings gelingt mir das nicht!</p>
<p>Kann mir nicht jemand die Funktion oder den Code-Schnipsel für mein Anliegen programmieren!</p>
<p>Dann macht es vielleicht Klick!</p>
<p>Danke im Vorraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561370</guid><dc:creator><![CDATA[LØRdSe]]></dc:creator><pubDate>Fri, 08 Aug 2008 11:06:46 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 11:11:40 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19540">@LØRdSe</a>: Bist Du Tom?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561374</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Fri, 08 Aug 2008 11:11:40 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 11:13:58 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">{ 

          char *daten = NULL; 

          stat(file_name, &amp;dataStat); 
          daten = malloc(dataStat.st_size); 

          while( read(handle, daten, sizeof(dataStat.st_size)) != 0) 
              { 
              printf(&quot;Daten[]: %s!\n&quot;, daten); 
              rc = send(s, daten, sizeof(daten), 0); 
              } 
      }
</code></pre>
<p>sizeof(daten) ist auf üblichen 32 bit system 4!!!<br />
Ist das was Du willst? Vermutlich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561376</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Fri, 08 Aug 2008 11:13:58 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 11:14:12 GMT]]></title><description><![CDATA[<p>simon.gysi schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19540">@LØRdSe</a>: Bist Du Tom?</p>
</blockquote>
<p>Nein Tom ist mein bester Freund(natürlich rein platonisch)!<br />
Und er ist nicht schwul nur jeder muss ein Opfer bringen!</p>
<p>So bitte Back2Topic, ich würde das Problem gerne lösen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561377</guid><dc:creator><![CDATA[LØRdSe]]></dc:creator><pubDate>Fri, 08 Aug 2008 11:14:12 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 11:15:39 GMT]]></title><description><![CDATA[<p>werte doch mal die rückgabe werte der send(..) und recv(..) funktionen aus.. dann hättest Du bemerkt, dass da ein fehler mit sizeof(daten) sein muss...</p>
<p>benutzt du einen Debugger?</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561378</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Fri, 08 Aug 2008 11:15:39 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 11:16:29 GMT]]></title><description><![CDATA[<blockquote>
<p>So bitte Back2Topic, ich würde das Problem gerne lösen!</p>
</blockquote>
<p>Grundlagen lernen.<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561379</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Fri, 08 Aug 2008 11:16:29 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 11:46:38 GMT]]></title><description><![CDATA[<p>Nein ich benutze keinen Debugger!</p>
<p>Ich habe festgestllet das der Rückgabewert der Funktion recv() -1 ist!<br />
Und deiner Meinung nach liegt das an dem sizeof(daten), allerdinsg habe ich das jetzt in:</p>
<pre><code class="language-cpp">sizeof(dataStat.st_size);
</code></pre>
<p>geändert!</p>
<p>EDIT:</p>
<p>Ich dachte recv(); ist ein Blocking Call allerdings gebe ich in meinem Server Programm den Rückgabewert der Funktion recv(); aus dieser wird allerdings schon ausgegeben bevor ich überhaupt eine Datei gesendet hab!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/734">@Simon</a> diese Antworten:</p>
<blockquote>
<p>Grundlagen lernen!</p>
</blockquote>
<p>halte ich für ziemlich unproduktiv!<br />
Vielleicht würdest du mir mit dem funktionierendem Code-Schnipsel und einer kleinen Erklärung dazu viel mehr helfen!</p>
<p>Also bitte setze es dochmnal fürmich um!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561386</guid><dc:creator><![CDATA[LØRdSe]]></dc:creator><pubDate>Fri, 08 Aug 2008 11:46:38 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 11:50:33 GMT]]></title><description><![CDATA[<p>simon.gysi schrieb:</p>
<blockquote>
<p>Grundlagen lernen.</p>
</blockquote>
<p>Dem schließe ich mich an. Wenn du noch nicht mal &quot;sizeof&quot; verstehst, solltest du noch ein paar einfachere Anwendungen schreiben oder Tutorials durchackern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561393</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 08 Aug 2008 11:50:33 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 12:24:14 GMT]]></title><description><![CDATA[<p>1. Tip: Benutze den Debugger!<br />
2.</p>
<blockquote>
<p>Ich habe festgestllet das der Rückgabewert der Funktion recv() -1 ist!<br />
Und deiner Meinung nach liegt das an dem sizeof(daten), allerdinsg habe ich das jetzt in:</p>
</blockquote>
<p>Nein, das war nicht meine Meinung.</p>
<p>Ob recv(..) blocking ist oder nicht hängt übrigens mit dem Socket zusammen.<br />
Bei Dir ist es allerdings blocking.</p>
<p>recv(..) soll man in einer Schleife benutzen und den Rückgabe beachten!<br />
Smion</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561430</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Fri, 08 Aug 2008 12:24:14 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 14:41:55 GMT]]></title><description><![CDATA[<p>Korrigiert mich wenn ich mich irre!<br />
Aber eigentlich bin ich mir ziemlich sicher das sizeof() mir die Anzahl Bytes liefert die für eine Variable reserviert wird!</p>
<p>Also was genau is das Problem?</p>
<p>Was mich stutzig macht:<br />
Alleine dieser Code-Schnipsel produziert unsinnige Ausgaben:</p>
<p>Client:</p>
<pre><code class="language-cpp">strcpy(file_name, &quot;Hallo!&quot;);
  send(s, file_name,6,0);
</code></pre>
<p>Server:</p>
<pre><code class="language-cpp">rc= recv(acceptSocket, daten, 6, 0);
   printf(&quot;%s&quot;, daten);
</code></pre>
<p>Da kann doch jetzt nix falsch dran sein!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561493</guid><dc:creator><![CDATA[LØRdSe]]></dc:creator><pubDate>Fri, 08 Aug 2008 14:41:55 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 14:27:51 GMT]]></title><description><![CDATA[<p>LØRdSe schrieb:</p>
<blockquote>
<p>Korrigiert mich wenn ich mich irre!<br />
Aber eigentlich bin ich mir ziemlich sicher das sizeof() mir die Anzahl Bytes liefert die für eine Variable reserviert wird!</p>
<p>Also was genau is das Problem?</p>
</blockquote>
<p>Ja du liegst sowas von falsch des gibts gar net -&gt; Beispiel:</p>
<pre><code class="language-cpp">char		*test;

	printf(&quot;vor malloc:%i&quot;, sizeof(test));	//= 4
	test = malloc(46214);
	printf(&quot;nach malloc:%i&quot;, sizeof(test));	//= 4
	free(test);
	printf(&quot;ich habs doch gleich gesagt!&quot;);
</code></pre>
<p>*** <code>aber!</code> ***</p>
<pre><code class="language-cpp">char		doguggste[123];

	printf(&quot;ach so:%i&quot;, sizeof(doguggste));	//= 123
</code></pre>
<p>gib das mal ein und staune</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561503</guid><dc:creator><![CDATA[doguggste]]></dc:creator><pubDate>Fri, 08 Aug 2008 14:27:51 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 14:30:06 GMT]]></title><description><![CDATA[<p>Da hast Du allerdings recht.<br />
Allerdings ist deine Variable ein Pointer (und dessen Grösse wird zurückgegeben, eben vermutlich 4).<br />
Und der Pointer zeigt auf Memory, dessen Grösse aber der Programmierer verwalten muss.</p>
<p>Für detailiertere Erklärungen schlage ich vor, dass Du mal bei MSDN nachliest.</p>
<p>Gruss Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561505</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Fri, 08 Aug 2008 14:30:06 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 14:31:44 GMT]]></title><description><![CDATA[<p>Und wenn bei Fall 2 von doguggste die Variable (eine Array Variable) weitergereicht wird, dann geht sizeof wieder nicht so wie Du's gerne hättest...<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561506</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Fri, 08 Aug 2008 14:31:44 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 14:40:50 GMT]]></title><description><![CDATA[<p>Also bei dem Winsock Ding ist es ja so, daß oft u_char Strings gesendet und/oder empfangen werden. Wenn du sendest solltest du schon wissen was du sendest, also ist dir die Länge des SendStrings bekannt. Wenn du empfängst und die Daten in einem Buffer (z.B. Char array oder mit malloc zugewiesener Speicher) gespeichert werden weisst du nur am Rückgabewert von recv wieviele Daten wirklich empfangen wurden. Strlen oder ähnliches versagt da, weil du ja möglöicherweise Daten empfängst die auch gewollt '\x00' enthalten. Das ist im groben die Funktionsweise von send/recieve.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561513</guid><dc:creator><![CDATA[doguggste]]></dc:creator><pubDate>Fri, 08 Aug 2008 14:40:50 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 14:45:05 GMT]]></title><description><![CDATA[<p>Was mich stutzig macht:<br />
Alleine dieser Code-Schnipsel produziert unsinnige Ausgaben:</p>
<p>Client:</p>
<pre><code class="language-cpp">strcpy(file_name, &quot;Hallo!&quot;);
  send(s, file_name,6,0);
</code></pre>
<p>Server:</p>
<pre><code class="language-cpp">rc= recv(acceptSocket, daten, 6, 0);
   printf(&quot;%s&quot;, daten);
</code></pre>
<p>Da kann doch jetzt nix falsch dran sein!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561516</guid><dc:creator><![CDATA[LØRdSe]]></dc:creator><pubDate>Fri, 08 Aug 2008 14:45:05 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 14:53:54 GMT]]></title><description><![CDATA[<p>LØRdSe schrieb:</p>
<blockquote>
<p>Was mich stutzig macht:<br />
Alleine dieser Code-Schnipsel produziert unsinnige Ausgaben:</p>
<p>Client:</p>
<pre><code class="language-cpp">strcpy(file_name, &quot;Hallo!&quot;);
  send(s, file_name,6,0);
</code></pre>
<p>Server:</p>
<pre><code class="language-cpp">rc= recv(acceptSocket, daten, 6, 0);
   printf(&quot;%s&quot;, daten);
</code></pre>
<p>Da kann doch jetzt nix falsch dran sein!</p>
</blockquote>
<pre><code class="language-cpp">rc= recv(acceptSocket, daten, 6, 0);
   daten[rc] = '\0'; // &lt;-------------
   printf(&quot;%s&quot;, daten);
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561520</guid><dc:creator><![CDATA[Blabalasdkas]]></dc:creator><pubDate>Fri, 08 Aug 2008 14:53:54 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 14:57:46 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">rc= recv(acceptSocket, daten, 6, 0);
   daten[rc] = '\0'; // &lt;-------------
   printf(&quot;%s&quot;, daten);
</code></pre>
<p>Das bringt garnix außer ein weiteres kyrillisches Zeichen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561523</guid><dc:creator><![CDATA[LØRdSe]]></dc:creator><pubDate>Fri, 08 Aug 2008 14:57:46 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 15:00:13 GMT]]></title><description><![CDATA[<p>Zur Fehlereingrenzugn sende folgendes:</p>
<pre><code class="language-cpp">int  test;  
  test = send(s, &quot;Hallo!&quot;,6,0);
</code></pre>
<p>und werte erstmal test aus, wenn ok, dann Sender ok, wenn net dann net;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561524</guid><dc:creator><![CDATA[doguggste]]></dc:creator><pubDate>Fri, 08 Aug 2008 15:00:13 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 15:03:12 GMT]]></title><description><![CDATA[<p>Rückgabewert ist mal wieder -1!<br />
Warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561526</guid><dc:creator><![CDATA[LØRdSe]]></dc:creator><pubDate>Fri, 08 Aug 2008 15:03:12 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock2 ungewöhnliche Ausgaben nach Datenversand! on Fri, 08 Aug 2008 16:00:14 GMT]]></title><description><![CDATA[<p>winsock -&gt; <a href="http://msdn.microsoft.com/en-us/library/ms741394.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms741394.aspx</a><br />
send(..) -&gt; <a href="http://msdn.microsoft.com/en-us/library/ms740149.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms740149.aspx</a><br />
recv(..) -&gt; <a href="http://msdn.microsoft.com/en-us/library/ms740121.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms740121.aspx</a></p>
<p>Guck doch mal was in der Doku zum return value steht...</p>
<p>Noch ein Hinweis:<br />
Bei recv(..) ist es nicht zwinged so, dass Du alles auf einmal bekommst.<br />
z.B. werden 6 Bytes gesendet, und empfangen werden einmal 4 Bytes und einmal 2 Bytes, das erkennst Du dann am return value.</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561547</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Fri, 08 Aug 2008 16:00:14 GMT</pubDate></item></channel></rss>