<?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[[Gelöst] Winsock - Anmeldung]]></title><description><![CDATA[<p>Guten Tag alle miteinander,</p>
<p>ich versuche im Moment eine Socket-Verbindung zu einem Switch (Cisco Catalyst 2950) herzustellen. Allerdings habe ich ein Problem bei der Anmeldung am Switch.</p>
<p>Wenn ich eine Telnet-Verbindung zum Switch aufbaue, kommt als erste Eingabe das Login-Passwort. Meine Überlegung war also, dass ich nur eine Verbindung zum Switch herstellen muss und dann das Passwort senden muss (nach kurzem Delay).<br />
Realisiert habe ich es wie folgt:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;

#ifdef WIN32
       #include &lt;winsock.h&gt;
       #include &lt;windows.h&gt;
#elif unix
      #include &lt;netinet/in.h&gt;
      #include &lt;sys/socket.h&gt;
#endif

using namespace std;

const int defbufflen = 1024;

int main(int argc, char *argv[])
{   
    WSADATA ws;

    int tcp_socket = 0, check = 0, rbytes = 0, sbytes = 0;
    struct sockaddr_in peer;
    char recvbuff[defbufflen] = { 0 };
    char sendbuff[defbufflen] = { 0 };

    check = WSAStartup(0x0101, &amp;ws);

    if(check != 0) {
           printf(&quot;Error %d (WSAStartup).\n&quot;, check);
           return (1);
    } else {
           printf(&quot;WSA gestarted.\n&quot;);
    }

    peer.sin_family = AF_INET;
    peer.sin_port = htons(23);
    peer.sin_addr.s_addr = inet_addr(&quot;172.16.50.9&quot;);

    tcp_socket = socket(AF_INET, SOCK_STREAM, 0);

    if(tcp_socket &lt; 1) {
        printf(&quot;Error! Couldn't open device.\n&quot;);
        system(&quot;PAUSE&quot;);
        return 0;
    }

    check = connect(tcp_socket, (struct sockaddr*)&amp;peer, sizeof(peer));

    if(check == SOCKET_ERROR) {
           printf(&quot;Error %d (couldn't connect to device! - Error %d.\n&quot;, WSAGetLastError());
           system(&quot;PAUSE&quot;);
           return (1);
    } else {
           printf(&quot;Connection compounded.\n&quot;);
    }

    //ReceiveBytes(tcp_socket, recvbuff);
    //strncpy(recvbuff_save, recvbuff, defbufflen);

    strncpy(sendbuff, &quot;brian&quot;, defbufflen);
    sbytes = send(tcp_socket, sendbuff, strlen(sendbuff), 0);
    printf(&quot;%d Bytes had been sent (%s).\n&quot;, sbytes, sendbuff);
    Sleep(5000);

    return 0;
}
</code></pre>
<p>Der Code funktioniert soweit auch und er sendet auch die 5 Bytes (&quot;brian&quot;). Meine Frage ist jetzt nur, ob meine Vorgehensweise prinzipiell richtig ist, dem Switch einfach die &quot;Wörter&quot; zu senden?</p>
<p>Ich war mir nicht sicher ob, das hier das richtige Forum ist. Wenn nicht; entschuldigt bitte ^^.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/200396/gelöst-winsock-anmeldung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 13:04:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/200396.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 14 Dec 2007 10:27:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Gelöst] Winsock - Anmeldung on Thu, 20 Dec 2007 14:04:13 GMT]]></title><description><![CDATA[<p>Guten Tag alle miteinander,</p>
<p>ich versuche im Moment eine Socket-Verbindung zu einem Switch (Cisco Catalyst 2950) herzustellen. Allerdings habe ich ein Problem bei der Anmeldung am Switch.</p>
<p>Wenn ich eine Telnet-Verbindung zum Switch aufbaue, kommt als erste Eingabe das Login-Passwort. Meine Überlegung war also, dass ich nur eine Verbindung zum Switch herstellen muss und dann das Passwort senden muss (nach kurzem Delay).<br />
Realisiert habe ich es wie folgt:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;

#ifdef WIN32
       #include &lt;winsock.h&gt;
       #include &lt;windows.h&gt;
#elif unix
      #include &lt;netinet/in.h&gt;
      #include &lt;sys/socket.h&gt;
#endif

using namespace std;

const int defbufflen = 1024;

int main(int argc, char *argv[])
{   
    WSADATA ws;

    int tcp_socket = 0, check = 0, rbytes = 0, sbytes = 0;
    struct sockaddr_in peer;
    char recvbuff[defbufflen] = { 0 };
    char sendbuff[defbufflen] = { 0 };

    check = WSAStartup(0x0101, &amp;ws);

    if(check != 0) {
           printf(&quot;Error %d (WSAStartup).\n&quot;, check);
           return (1);
    } else {
           printf(&quot;WSA gestarted.\n&quot;);
    }

    peer.sin_family = AF_INET;
    peer.sin_port = htons(23);
    peer.sin_addr.s_addr = inet_addr(&quot;172.16.50.9&quot;);

    tcp_socket = socket(AF_INET, SOCK_STREAM, 0);

    if(tcp_socket &lt; 1) {
        printf(&quot;Error! Couldn't open device.\n&quot;);
        system(&quot;PAUSE&quot;);
        return 0;
    }

    check = connect(tcp_socket, (struct sockaddr*)&amp;peer, sizeof(peer));

    if(check == SOCKET_ERROR) {
           printf(&quot;Error %d (couldn't connect to device! - Error %d.\n&quot;, WSAGetLastError());
           system(&quot;PAUSE&quot;);
           return (1);
    } else {
           printf(&quot;Connection compounded.\n&quot;);
    }

    //ReceiveBytes(tcp_socket, recvbuff);
    //strncpy(recvbuff_save, recvbuff, defbufflen);

    strncpy(sendbuff, &quot;brian&quot;, defbufflen);
    sbytes = send(tcp_socket, sendbuff, strlen(sendbuff), 0);
    printf(&quot;%d Bytes had been sent (%s).\n&quot;, sbytes, sendbuff);
    Sleep(5000);

    return 0;
}
</code></pre>
<p>Der Code funktioniert soweit auch und er sendet auch die 5 Bytes (&quot;brian&quot;). Meine Frage ist jetzt nur, ob meine Vorgehensweise prinzipiell richtig ist, dem Switch einfach die &quot;Wörter&quot; zu senden?</p>
<p>Ich war mir nicht sicher ob, das hier das richtige Forum ist. Wenn nicht; entschuldigt bitte ^^.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1420408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1420408</guid><dc:creator><![CDATA[SeniiX]]></dc:creator><pubDate>Thu, 20 Dec 2007 14:04:13 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Winsock - Anmeldung on Mon, 17 Dec 2007 16:39:11 GMT]]></title><description><![CDATA[<p>Hm, kann mir niemand helfen? Oder ist die Frage einfach zu primitiv bzw. zu unverständlich?</p>
<p>Inzwischen denke ich auch, dass ich dem Switch bestimmte Keywords vor den Eingaben schicken muss, weiß da vllt. jemand mehr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1422137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1422137</guid><dc:creator><![CDATA[SeniiX]]></dc:creator><pubDate>Mon, 17 Dec 2007 16:39:11 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Winsock - Anmeldung on Mon, 17 Dec 2007 22:53:54 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ja, das sieht soweit korrekt aus. Ich kenne mich selbst mit telnet nicht weiter aus, aber es gibt einen (oder eher mehrere) RFC darueber, wo beschrieben wird, wie genau die Kommunikation auszusehen hat. Darin findest du die Informationen, was du evtl. noch vorher senden musst.<br />
Speziell ins Auge gefallen ist mir:<br />
<a href="http://www.faqs.org/rfcs/rfc1572.html" rel="nofollow">http://www.faqs.org/rfcs/rfc1572.html</a><br />
wo etwas zum Login steht (ueber Variablen, 5. Well Known Variables) - ich habe es mir nicht naeher angeschaut.</p>
<p>Ansonsten gibt es weitere Verweise zu RFCs bei den <a href="http://de.wikipedia.org/wiki/Telnet" rel="nofollow">Weblinks im Wikipedia-Artikel</a>.</p>
<p>Ggf. kannst du dir auch den Quellcode zu einem Opensource-Telnet-Client anschauen oder dir eine Bibliothek suchen, die das ganze fuer dich macht.</p>
<p>Gruss,<br />
DeSoVoDaMu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1422326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1422326</guid><dc:creator><![CDATA[DeSoVoDaMu]]></dc:creator><pubDate>Mon, 17 Dec 2007 22:53:54 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Winsock - Anmeldung on Tue, 18 Dec 2007 19:47:32 GMT]]></title><description><![CDATA[<p>Das password muss noch terminiert werden,.. also ENTER taste im sendbuff dranghängen,.. gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1422820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1422820</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Tue, 18 Dec 2007 19:47:32 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Winsock - Anmeldung on Tue, 18 Dec 2007 21:29:16 GMT]]></title><description><![CDATA[<p>Danke sowohl DeSoVoDaMu als auch zeusosc.</p>
<p>Ich hab zwar kein &quot;Keyword&quot; für die Authentifizierung in den RFCs gefunden aber ich verstehe das Protocol jetzt besser <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Das mit der Terminierung werde ich so bald wie möglich (am Donnerstag) ausprobieren.</p>
<p>Allerdings ist mir noch nicht ganz klar wieso ich ENTER mitschicken soll? Ich dachte mir, dass die send-Funktion das für mich erledigt. Kann mir das vllt. jemand näher erläutern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1422864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1422864</guid><dc:creator><![CDATA[SeniiX]]></dc:creator><pubDate>Tue, 18 Dec 2007 21:29:16 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Winsock - Anmeldung on Wed, 19 Dec 2007 07:15:48 GMT]]></title><description><![CDATA[<p>Hi,<br />
wenn du per telnet dein pwd eingibst, drückst du doch auch enter oder nicht??<br />
ausserdem sendet send nur die zeichenkette, falls send trotz aller erwarten ein \0 mitsendet wird es dennoch nicht als eingabe bestätigung verwertet, sondern reagiert nur auf LF und CR,.. (z.b. post's sind auch vom http header auch durch \cr\lf\cr\lf getrennt)</p>
<p>grüüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1422932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1422932</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Wed, 19 Dec 2007 07:15:48 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Winsock - Anmeldung on Wed, 19 Dec 2007 09:16:05 GMT]]></title><description><![CDATA[<p>Danke vielmals. Hast mir sehr geholfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1422994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1422994</guid><dc:creator><![CDATA[SeniiX]]></dc:creator><pubDate>Wed, 19 Dec 2007 09:16:05 GMT</pubDate></item></channel></rss>