<?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[c++ Socket-Client]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe einen Switch, der mit TELNET erreichbar und konfigurierbar ist. Und genau das möchte ich nicht über die Konsole machen, sondern aus meinem Programm heraus.<br />
Bei einer Telnet-Verbindung beginnt der Server mit einer Begrüßung gefolgt von dem Login. Die Socket-Verbindung funktioniert.<br />
Mein Problem ist, dass ich die Daten NACH dem Login lesen möchte, und nicht den Begrüßungs-Kram. Im Moment habe ich im Buffer immer den Begrüßungs-Kram.<br />
Damit ist die konkrete Frage: Wie kann ich den Lese-Puffer leeren, bis zu dem Moment, nachdem ich einen Befehl XY an den Server/Switch gesendet habe.</p>
<pre><code class="language-cpp">// bis hierher Input-Buffer leeren
	n = write(sockfd, command, strlen(command));

// ab hier Input-Buffer lesen
	char buffer[255];
	memset(buffer, 0, 255);		
	n = read(sockfd, buffer, 253);
</code></pre>
<p>Vielen Dank für eure Anregungen!<br />
Grüße,<br />
Jörg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/289464/c-socket-client</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 02:53:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/289464.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 05 Jul 2011 13:48:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to c++ Socket-Client on Tue, 05 Jul 2011 13:48:40 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe einen Switch, der mit TELNET erreichbar und konfigurierbar ist. Und genau das möchte ich nicht über die Konsole machen, sondern aus meinem Programm heraus.<br />
Bei einer Telnet-Verbindung beginnt der Server mit einer Begrüßung gefolgt von dem Login. Die Socket-Verbindung funktioniert.<br />
Mein Problem ist, dass ich die Daten NACH dem Login lesen möchte, und nicht den Begrüßungs-Kram. Im Moment habe ich im Buffer immer den Begrüßungs-Kram.<br />
Damit ist die konkrete Frage: Wie kann ich den Lese-Puffer leeren, bis zu dem Moment, nachdem ich einen Befehl XY an den Server/Switch gesendet habe.</p>
<pre><code class="language-cpp">// bis hierher Input-Buffer leeren
	n = write(sockfd, command, strlen(command));

// ab hier Input-Buffer lesen
	char buffer[255];
	memset(buffer, 0, 255);		
	n = read(sockfd, buffer, 253);
</code></pre>
<p>Vielen Dank für eure Anregungen!<br />
Grüße,<br />
Jörg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089112</guid><dc:creator><![CDATA[dfpes]]></dc:creator><pubDate>Tue, 05 Jul 2011 13:48:40 GMT</pubDate></item><item><title><![CDATA[Reply to c++ Socket-Client on Tue, 05 Jul 2011 14:03:47 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>warum nutzt du nicht recv()/send()?<br />
Ansonsten verstehe ich dein Problem nicht so ganz. Du kommst nicht drum rum den &quot;Begrüßungs-Kram&quot; auszulesen. Wenn er dich nicht interessiert, verwirf ihn halt und empfang das nächste Paket. <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="😕"
    /><br />
Suchst du vielleicht strstr() bzw. std::string::find() oder auch std::search()?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089119</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Tue, 05 Jul 2011 14:03:47 GMT</pubDate></item><item><title><![CDATA[Reply to c++ Socket-Client on Tue, 05 Jul 2011 15:32:51 GMT]]></title><description><![CDATA[<p>Hey, danke für die Gegenfrage... Alles was ich bis dahin gelesen hatte, funktionierte mit write und read. (Die Daten bis dahin einfach verwerfen ist nat. auch ne Idee)<br />
Mit recv und send scheint es auch einfacher zu funktionieren.</p>
<p>Jetzt habe ich das Problem, dass das char, welches ich sende, am Ende um ein leeres Zeichen ergänzt wird -&gt; damit ist der Username nat. falsch.<br />
sizeof(user)-1 funktioniert nicht, bzw. bei -2 wird das letzte Zeichen des usernamens gelöscht und dahinter ist trotzdem das Leerzeichen.<br />
Sorry, aber ich bin recht unbeholfen...</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089163</guid><dc:creator><![CDATA[dfpes]]></dc:creator><pubDate>Tue, 05 Jul 2011 15:32:51 GMT</pubDate></item><item><title><![CDATA[Reply to c++ Socket-Client on Tue, 05 Jul 2011 17:17:01 GMT]]></title><description><![CDATA[<p>Ich verstehe weiterhin dein Problem nicht ganz. Also auf den Server selbst hast du keinen Einfluss, bzw. der ist halt vorgegeben und er hält sich an das Protokoll. Soweit richtig verstanden?</p>
<p>dfpes schrieb:</p>
<blockquote>
<p>Jetzt habe ich das Problem, dass das char, welches ich sende, am Ende um ein leeres Zeichen ergänzt wird</p>
</blockquote>
<p>Du meinst den String? 1 char(acter) = 1 Zeichen. Sollte man vielleicht mal ins C Forum verschieben, oder ins Pinguin Forum.<br />
Was meinst du mit &quot;am Ende um ein leeres Zeichen ergänzt wird&quot;? Heißt das, dass es so sein soll du es aber nicht hinbekommst?</p>
<pre><code class="language-cpp">char buf[0x100] = &quot;Name&quot;;
strcat(buf, &quot; &quot;); // auf die Puffergröße achten!
send(sock, buf, strlen(buf), 0);
</code></pre>
<p>Oder steht ein Leerzeichen am Ende und du möchtest es weg haben?</p>
<pre><code class="language-cpp">char buf[0x100] = &quot;Name &quot;;
buf[strlen(buf) - 1] = '\0'; // strlen(buf) muss garantiert &gt; 0 sein!
send(sock, buf, strlen(buf), 0);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2089215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089215</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Tue, 05 Jul 2011 17:17:01 GMT</pubDate></item></channel></rss>