<?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[TCP&#x2F;IP Buffer]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>ich habe eine TCP/IP Verbindung zwischen meinem Rechner und einem Roboter. Das ganze läuft nicht multithreaded, das heisst wenn mein Programm in einer Routine hängt, dann schickt der Robi zwar Positionsdaten, aber mein Programm nimmt sie nicht auf. Das Problem ist nun, wenn ich zulange in einer Routine hänge, dass dann Befehle, die an den Robi aus dieser Routine heraus gehen, erst ausgeführt werden, wenn meine Routine fertig ist. Liegt das daran dass mein Buffer der TCP/IP Verbindung zu klein ist? Ich habe zwar schon versucht den Buffer zu erhöhen, leider ist mein Problem nicht besser geworden. Gibt es eine Möglickeit den Buffer einer TCP/IP Verbindung zu leeren innerhalb eines Programms? Oder liegt es vielleicht gar nicht an dem Buffer?</p>
<p>Ich wusste leider nicht genau, ob der Thread jetzt hierhin gehört oder besser in einen anderen Teil des Forums passt, sorry dafür.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/188002/tcp-ip-buffer</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 13:38:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/188002.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 26 Jul 2007 08:41:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TCP&#x2F;IP Buffer on Thu, 26 Jul 2007 08:41:17 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>ich habe eine TCP/IP Verbindung zwischen meinem Rechner und einem Roboter. Das ganze läuft nicht multithreaded, das heisst wenn mein Programm in einer Routine hängt, dann schickt der Robi zwar Positionsdaten, aber mein Programm nimmt sie nicht auf. Das Problem ist nun, wenn ich zulange in einer Routine hänge, dass dann Befehle, die an den Robi aus dieser Routine heraus gehen, erst ausgeführt werden, wenn meine Routine fertig ist. Liegt das daran dass mein Buffer der TCP/IP Verbindung zu klein ist? Ich habe zwar schon versucht den Buffer zu erhöhen, leider ist mein Problem nicht besser geworden. Gibt es eine Möglickeit den Buffer einer TCP/IP Verbindung zu leeren innerhalb eines Programms? Oder liegt es vielleicht gar nicht an dem Buffer?</p>
<p>Ich wusste leider nicht genau, ob der Thread jetzt hierhin gehört oder besser in einen anderen Teil des Forums passt, sorry dafür.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332785</guid><dc:creator><![CDATA[samo]]></dc:creator><pubDate>Thu, 26 Jul 2007 08:41:17 GMT</pubDate></item><item><title><![CDATA[Reply to TCP&#x2F;IP Buffer on Thu, 26 Jul 2007 09:52:59 GMT]]></title><description><![CDATA[<p>Das kommt darauf an wie deine Routine aufgebaut ist. Ohne etwas Code wirds schwierig dir zu helfen.</p>
<p>Wenn deine Routine so aufgebaut ist, dann werden die Daten erst am Ende gesendet:</p>
<pre><code class="language-cpp">void Routine()
{
   while(/*Bedingung*/)
   {
       // erzeuge befehle
   }
   Verbindung.send(befehle,...);
}
</code></pre>
<p>Ist sie so aufgebaut, dann sollten die Daten sofort gesendet werden.</p>
<pre><code class="language-cpp">void Routine()
{
   while(/*Bedingung*/)
   {
       // erzeuge Befehl X
       Verbindung.send(befehlX,...);
   }
}
</code></pre>
<p>Das ganze kann auch von anderen Bedingungen abhängen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332852</guid><dc:creator><![CDATA[Chris++ 0]]></dc:creator><pubDate>Thu, 26 Jul 2007 09:52:59 GMT</pubDate></item><item><title><![CDATA[Reply to TCP&#x2F;IP Buffer on Thu, 26 Jul 2007 11:11:02 GMT]]></title><description><![CDATA[<p>O.k., sorry, etwas Code ist natürlich immer hilfreich.</p>
<p>Also meine Routine ist so aufgebaut:</p>
<pre><code class="language-cpp">void Hauptroutine()
{
  Routine1();
  Routine2();
  Routine3();
}
</code></pre>
<p>In Routine2() wird dabei der Befehl an meinen Roboter gesendet:</p>
<pre><code class="language-cpp">void Routine2()
{
  send.Befehl();
  while(i &lt; 100)
  {
    tue irgendwas...
    i++;
  }
}
</code></pre>
<p>Was vielleicht am wichtigsten ist: In Routine1() berechne ich etwas sehr speicheraufwendiges, und in dieser Zeit besteht zwar die Verbindung weiter, die gesendeten Daten des Roboters werden aber von meiner Seite aus nicht empfangen bzw. weiterverarbeitet. Je länger die Routine1() rechnet, desto wahrscheinlicher wird der Befehl an den Robi erst nach beenden der Hauptroutine() ausgeführt. Daher gehe ich davon aus, dass es ein Speicherproblem ist. Aber wie gesagt, ich bin mir nicht sicher, dazu kenne ich mich zuwenig in der ganzen TCP/IP-Geschichte aus.<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332920</guid><dc:creator><![CDATA[samo]]></dc:creator><pubDate>Thu, 26 Jul 2007 11:11:02 GMT</pubDate></item><item><title><![CDATA[Reply to TCP&#x2F;IP Buffer on Thu, 26 Jul 2007 19:53:26 GMT]]></title><description><![CDATA[<p>Also wenn du gleichtzeitig Befehle senden / empfangen und nebenbei noch was berechnen willst, dann benutze einen 2. Thread. Anders gehts nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1333350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1333350</guid><dc:creator><![CDATA[Chris++ 0]]></dc:creator><pubDate>Thu, 26 Jul 2007 19:53:26 GMT</pubDate></item></channel></rss>