<?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[Seltsames recv Problem]]></title><description><![CDATA[<p>Hi,<br />
ich hoffe ich bin mit meinem Neztwerkroblem hier richtig. Ist aber meiner Meinung nach nur ein inderektes Netzwerkproblem.</p>
<p>So .. jetzt aber zu meinem Programm ^^</p>
<p>Ich habe einen Server, welcher Befehle von einem Client erhält, diese bearbeitet, und das ergebnis zurückschickt.</p>
<p>Bei meinem Fehlerhaften Befehlt handelt es sich um einen &quot;Dir&quot;-befehl (auslesen von verzeichniss).</p>
<p>Das seltsame daran ist, dass der code beim <strong>ersten</strong> Aufruf <strong>funktioniert</strong> und beim <strong>zweiten mal nicht mehr!</strong> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Hier der dazugehörige Code:</p>
<pre><code class="language-cpp">if (command == &quot;dir&quot;)
{

        char dir_list[MAX_PATH + 1];

        enterlock = 1;

   WIN32_FIND_DATA FindFileData;
   HANDLE hFind = INVALID_HANDLE_VALUE;

   char DirSpec[MAX_PATH + 1];  // directory specification
   DWORD dwError;

   strncpy (DirSpec, working_dir, strlen(working_dir) );
   strncat (DirSpec, &quot;\\*&quot;, 3);

   hFind = FindFirstFile(DirSpec, &amp;FindFileData);

   if (hFind == INVALID_HANDLE_VALUE) 
   {
      return (-1);
   } 
   else 
   {
      strncpy (dir_list, &quot;Current dir: \n&quot;, 12);
      strncat (dir_list, working_dir, strlen(working_dir) );
      strncat (dir_list, &quot;\n&quot;, 2);
      strncat (dir_list, FindFileData.cFileName, strlen(FindFileData.cFileName) );
      strncat (dir_list, &quot;\n&quot;, 2);

      while (FindNextFile(hFind, &amp;FindFileData) != 0) 
      {
         strncat (dir_list, FindFileData.cFileName, strlen(FindFileData.cFileName) );
         strncat (dir_list, &quot;\n&quot;, 2);
      }

      dwError = GetLastError();
      FindClose(hFind);
      if (dwError != ERROR_NO_MORE_FILES) 
      {
         return (-1);
      }
   }

   rc=send(connectedSocket,dir_list,strlen(dir_list),0);

} //######################## ende der abfrage ob ein dir ausgeführt wurde
</code></pre>
<p>und jetzt etwas .. wo man vll. einen Lösungsansatz dazu finden könnte,<br />
hab schon viel probiert aber nichts hat genutzt.</p>
<p>Wenn man nämlich .. folgenden Code dazwischen aufruft .. (ein chdir)<br />
dann kann man danach wieder ein DIR aufrufen!!</p>
<pre><code class="language-cpp">//################################################ dir auslesen 

if (command == &quot;chdir&quot;)
{
        enterlock = 1;

        char dir_temp[MAX_PATH + 1],
             dir_list[MAX_PATH + 1];

        sprintf(buf2,&quot;Path:&quot;);
        rc=send(connectedSocket,buf2,strlen(buf2),0);

             while(readready == 0)
             {

		 rc=recv(connectedSocket,dir_temp,100000,0);
		 dir_temp[rc]='\0';

		 strcpy(working_dir, dir_temp);

		 readready = 1;
	    }

        readready = 0;

        sprintf(buf2,&quot;Current Directory: %s&quot;, working_dir);
        rc=send(connectedSocket,buf2,strlen(buf2),0);

} //################################### ende des chdir blocks
</code></pre>
<p>Wie kann das sein,<br />
dass es nur dann geht, wenn man ein chdir dazwischen aufruft??<br />
Hoffe jemand von euch kann mir da helfen, weiß echt nicht mehr weiter...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/120719/seltsames-recv-problem</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 10:54:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/120719.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 15 Sep 2005 17:10:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Seltsames recv Problem on Thu, 15 Sep 2005 17:10:41 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich hoffe ich bin mit meinem Neztwerkroblem hier richtig. Ist aber meiner Meinung nach nur ein inderektes Netzwerkproblem.</p>
<p>So .. jetzt aber zu meinem Programm ^^</p>
<p>Ich habe einen Server, welcher Befehle von einem Client erhält, diese bearbeitet, und das ergebnis zurückschickt.</p>
<p>Bei meinem Fehlerhaften Befehlt handelt es sich um einen &quot;Dir&quot;-befehl (auslesen von verzeichniss).</p>
<p>Das seltsame daran ist, dass der code beim <strong>ersten</strong> Aufruf <strong>funktioniert</strong> und beim <strong>zweiten mal nicht mehr!</strong> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Hier der dazugehörige Code:</p>
<pre><code class="language-cpp">if (command == &quot;dir&quot;)
{

        char dir_list[MAX_PATH + 1];

        enterlock = 1;

   WIN32_FIND_DATA FindFileData;
   HANDLE hFind = INVALID_HANDLE_VALUE;

   char DirSpec[MAX_PATH + 1];  // directory specification
   DWORD dwError;

   strncpy (DirSpec, working_dir, strlen(working_dir) );
   strncat (DirSpec, &quot;\\*&quot;, 3);

   hFind = FindFirstFile(DirSpec, &amp;FindFileData);

   if (hFind == INVALID_HANDLE_VALUE) 
   {
      return (-1);
   } 
   else 
   {
      strncpy (dir_list, &quot;Current dir: \n&quot;, 12);
      strncat (dir_list, working_dir, strlen(working_dir) );
      strncat (dir_list, &quot;\n&quot;, 2);
      strncat (dir_list, FindFileData.cFileName, strlen(FindFileData.cFileName) );
      strncat (dir_list, &quot;\n&quot;, 2);

      while (FindNextFile(hFind, &amp;FindFileData) != 0) 
      {
         strncat (dir_list, FindFileData.cFileName, strlen(FindFileData.cFileName) );
         strncat (dir_list, &quot;\n&quot;, 2);
      }

      dwError = GetLastError();
      FindClose(hFind);
      if (dwError != ERROR_NO_MORE_FILES) 
      {
         return (-1);
      }
   }

   rc=send(connectedSocket,dir_list,strlen(dir_list),0);

} //######################## ende der abfrage ob ein dir ausgeführt wurde
</code></pre>
<p>und jetzt etwas .. wo man vll. einen Lösungsansatz dazu finden könnte,<br />
hab schon viel probiert aber nichts hat genutzt.</p>
<p>Wenn man nämlich .. folgenden Code dazwischen aufruft .. (ein chdir)<br />
dann kann man danach wieder ein DIR aufrufen!!</p>
<pre><code class="language-cpp">//################################################ dir auslesen 

if (command == &quot;chdir&quot;)
{
        enterlock = 1;

        char dir_temp[MAX_PATH + 1],
             dir_list[MAX_PATH + 1];

        sprintf(buf2,&quot;Path:&quot;);
        rc=send(connectedSocket,buf2,strlen(buf2),0);

             while(readready == 0)
             {

		 rc=recv(connectedSocket,dir_temp,100000,0);
		 dir_temp[rc]='\0';

		 strcpy(working_dir, dir_temp);

		 readready = 1;
	    }

        readready = 0;

        sprintf(buf2,&quot;Current Directory: %s&quot;, working_dir);
        rc=send(connectedSocket,buf2,strlen(buf2),0);

} //################################### ende des chdir blocks
</code></pre>
<p>Wie kann das sein,<br />
dass es nur dann geht, wenn man ein chdir dazwischen aufruft??<br />
Hoffe jemand von euch kann mir da helfen, weiß echt nicht mehr weiter...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/873054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/873054</guid><dc:creator><![CDATA[Mindphreaker]]></dc:creator><pubDate>Thu, 15 Sep 2005 17:10:41 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames recv Problem on Thu, 15 Sep 2005 19:36:55 GMT]]></title><description><![CDATA[<p>Ein potientieller Fehler ist die Variable dirlist.<br />
MAX_PATH ist die maximale Länge eines Verzeichnisnamen, also so was wie<br />
\\huge\peter\harry.txt</p>
<p>Du packst da aber den ganzen Inhalt eines Verzeichnisses rein. Kann also passieren, dass Du munter bei Dir irgendwo in den Speicher schreibst.</p>
<p>Falls ausserdem die Variable enterlock irgendwas in Deinem restlichen Code zu bedeuten hat und auch nur entfernt was mit einer Sperre zu tun hat, könnte das ein weiteres Problem sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/873145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/873145</guid><dc:creator><![CDATA[niemand]]></dc:creator><pubDate>Thu, 15 Sep 2005 19:36:55 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames recv Problem on Thu, 15 Sep 2005 19:39:59 GMT]]></title><description><![CDATA[<p>Dies ist kein C/C++ Forum sondern ein C++ Forum. <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/873151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/873151</guid><dc:creator><![CDATA[hinweis]]></dc:creator><pubDate>Thu, 15 Sep 2005 19:39:59 GMT</pubDate></item></channel></rss>