<?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[mittels select() mehrere Typen von Streams überwachen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich würde gerne mittels Select zwei Typen von Streams überwachen.<br />
Momentan möchte ich etwas Telnetclientartiges proggen und einfaches hin- und herschicken von Text klappt schon, aber der Inputstream der Tastatur blockiert und somit verpasst man was der Server in der Zwischenzeit sendet. (Während man u.U. lange in der Eingabe hängt).</p>
<p>Jetzt stehe ich vor der Wahl mir etwas mit kbhit() zu basteln oder beim Selectaufruf auch noch den Tastaturstream zu überwachen.<br />
Zweiteres gefällt mir viel besser und beim ersten hab ich irgendwie den Verdacht die CPU Auslastung unnötig in die Höhe zu treiben....<br />
Ich könnte dann auch den TIMEVAL timout weglassen und select() blockierend werden lassen, was mit auch besser gefällt.</p>
<p>Momentaner Codeschnipsel:</p>
<pre><code class="language-cpp">//mySocket = schon verbundener Socket
  TIMEVAL zeit={0,0};
  while(1)
  {
    FD_ZERO(&amp;fdSet); // Inhalt leeren
    FD_SET(mySocket,&amp;fdSet);// den client socket hinzufügen
    //hier einen Tastaturstream hinzufügen - nur wie geht das?
    rc=select(0,&amp;fdSet,NULL,NULL,&amp;zeit); // &lt;&lt;-hier würde ich gerne auch die Tastatur überwachen
    if(rc==SOCKET_ERROR)
    {
      cout&lt;&lt;WSAGetLastError()&lt;&lt;endl;
      return 1;
    }

    cout&lt;&lt;&quot;myTelnet&gt;&quot;;
    cin&gt;&gt;buf;  //&lt;--- Der hier blockiert
    senddata(buf); // &lt;-- Fkt die Länge überprüft (buf overflow) sowie send() durchführt
  }
</code></pre>
<p>Wenn das mit dem Select geht, wäre ich auch für Codeschnipsel sehr dankbar... ich lerne immer besser mit Praxis als in der Theorie...</p>
<p>Gruss<br />
Markus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/144511/mittels-select-mehrere-typen-von-streams-überwachen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 18:43:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/144511.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 19 Apr 2006 03:43:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to mittels select() mehrere Typen von Streams überwachen on Wed, 19 Apr 2006 03:43:52 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich würde gerne mittels Select zwei Typen von Streams überwachen.<br />
Momentan möchte ich etwas Telnetclientartiges proggen und einfaches hin- und herschicken von Text klappt schon, aber der Inputstream der Tastatur blockiert und somit verpasst man was der Server in der Zwischenzeit sendet. (Während man u.U. lange in der Eingabe hängt).</p>
<p>Jetzt stehe ich vor der Wahl mir etwas mit kbhit() zu basteln oder beim Selectaufruf auch noch den Tastaturstream zu überwachen.<br />
Zweiteres gefällt mir viel besser und beim ersten hab ich irgendwie den Verdacht die CPU Auslastung unnötig in die Höhe zu treiben....<br />
Ich könnte dann auch den TIMEVAL timout weglassen und select() blockierend werden lassen, was mit auch besser gefällt.</p>
<p>Momentaner Codeschnipsel:</p>
<pre><code class="language-cpp">//mySocket = schon verbundener Socket
  TIMEVAL zeit={0,0};
  while(1)
  {
    FD_ZERO(&amp;fdSet); // Inhalt leeren
    FD_SET(mySocket,&amp;fdSet);// den client socket hinzufügen
    //hier einen Tastaturstream hinzufügen - nur wie geht das?
    rc=select(0,&amp;fdSet,NULL,NULL,&amp;zeit); // &lt;&lt;-hier würde ich gerne auch die Tastatur überwachen
    if(rc==SOCKET_ERROR)
    {
      cout&lt;&lt;WSAGetLastError()&lt;&lt;endl;
      return 1;
    }

    cout&lt;&lt;&quot;myTelnet&gt;&quot;;
    cin&gt;&gt;buf;  //&lt;--- Der hier blockiert
    senddata(buf); // &lt;-- Fkt die Länge überprüft (buf overflow) sowie send() durchführt
  }
</code></pre>
<p>Wenn das mit dem Select geht, wäre ich auch für Codeschnipsel sehr dankbar... ich lerne immer besser mit Praxis als in der Theorie...</p>
<p>Gruss<br />
Markus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1040212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1040212</guid><dc:creator><![CDATA[Markus321]]></dc:creator><pubDate>Wed, 19 Apr 2006 03:43:52 GMT</pubDate></item><item><title><![CDATA[Reply to mittels select() mehrere Typen von Streams überwachen on Wed, 19 Apr 2006 03:52:53 GMT]]></title><description><![CDATA[<p>Nachtrag: Sorry, hab vergessen zu erwähnen, dass ich MinGW unter Windows benutze.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1040213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1040213</guid><dc:creator><![CDATA[Markus321]]></dc:creator><pubDate>Wed, 19 Apr 2006 03:52:53 GMT</pubDate></item><item><title><![CDATA[Reply to mittels select() mehrere Typen von Streams überwachen on Wed, 19 Apr 2006 09:15:56 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=403" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=4" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1040364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1040364</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Wed, 19 Apr 2006 09:15:56 GMT</pubDate></item><item><title><![CDATA[Reply to mittels select() mehrere Typen von Streams überwachen on Wed, 19 Apr 2006 12:52:23 GMT]]></title><description><![CDATA[<p>Geht gar ned, wenn ich mich ned täusche funzt select() nur für socket deskriptoren unter Windows.??ß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1040536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1040536</guid><dc:creator><![CDATA[fasdasd]]></dc:creator><pubDate>Wed, 19 Apr 2006 12:52:23 GMT</pubDate></item><item><title><![CDATA[Reply to mittels select() mehrere Typen von Streams überwachen on Wed, 19 Apr 2006 13:27:17 GMT]]></title><description><![CDATA[<p>Du kannst &quot;WSAEventSelect&quot; und &quot;WSAWaitForMultipleEvents&quot; verwenden... damit kannst Du auf verschiedene Events gleichzeitig warten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1040573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1040573</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 19 Apr 2006 13:27:17 GMT</pubDate></item></channel></rss>