<?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[Client Anwendung mit IPv6: connect() --&amp;gt; Invalid argument &#x2F; Network is unreachable]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte eine eigene Serveranwendung auf einem Zielrechner mit einem Client über IPv6 ansprechen. Der Zielrechner ist auch über IPv6 erreichbar:</p>
<pre><code>$ping6 -I eth0 fe80::ba27:ebff:fed5:d633
PING fe80::ba27:ebff:fed5:d633(fe80::ba27:ebff:fed5:d633) from fe80::230:67ff:feb1:e3cf eth0: 56 data bytes
64 bytes from fe80::ba27:ebff:fed5:d633: icmp_seq=1 ttl=64 time=0.572 ms
64 bytes from fe80::ba27:ebff:fed5:d633: icmp_seq=2 ttl=64 time=0.722 ms
</code></pre>
<p>Mein Problem liegt momentan bei der Client-Anwendung, da ich leider nicht so richtig weiß, wie man die IP-Adresse vom Zielrechner dem sockaddr_in6 Datentyp zuweist. In meinem ersten Versuch habe ich es so gemacht:</p>
<pre><code>inet_pton(AF_INET6, &quot;fe80::ba27:ebff:fed5:d633&quot;, &amp;server_address.sin6_addr);
</code></pre>
<p>--&gt; Bei Programausführung wurde dann nach connect() die Fehlermeldung</p>
<blockquote>
<p>Invalid argument</p>
</blockquote>
<p>ausgegeben.</p>
<p>Der komplette Quellcode:</p>
<pre><code>#include &lt;stdio.h&gt;	/* für perror() */ 
#include &lt;sys/socket.h&gt;	/* für socket() */ 
#include &lt;unistd.h&gt;	/* für close()*/ 
#include &lt;netinet/in.h&gt;	/* für struct sockaddr */ 
#include &lt;stdlib.h&gt;	/* for exit() */ 
#include &lt;errno.h&gt;	/* für errno */ 
#include &lt;arpa/inet.h&gt;	/* für inet_addr */

int main() {

int client_fd, x;

/*** Anlegen der Zieladresse ***/
struct sockaddr_in6 server_address;
server_address.sin6_family=AF_INET6;
server_address.sin6_port=htons(9734);
inet_pton(AF_INET6, &quot;fe80::ba27:ebff:fed5:d633&quot;, &amp;server_address.sin6_addr);

/**** Anlegen eines Sockets ****/
client_fd = socket(PF_INET6, SOCK_STREAM, 0); 
if (client_fd &lt; 0) { 
	  printf(&quot;Socket kann nicht erstellt werden.\n&quot;); 
	  perror(&quot;socket error&quot;); 
	  close(client_fd); 
	  exit(errno); 
}

/*** Aufbauen der Verbindung ***/
	if (connect(client_fd, (struct sockaddr*)&amp;server_address, sizeof(server_address)) &lt; 0) {
		perror(&quot;Verbindungsfehler&quot;);
		exit(errno);
	}
	printf(&quot;established.\n&quot;);
}
</code></pre>
<p>Um dem Problem näher zu kommen, wollte ich mir dann ansehen was inet_pton zurück liefert und habe den Rückgabewert x zugeordnet:</p>
<pre><code>x=inet_pton(AF_INET6, &quot;fe80::ba27:ebff:fed5:d633&quot;, &amp;server_address.sin6_addr);
</code></pre>
<p>Der komplette Rest blieb unverändert. Doch nun kommt nach connect() als Fehlermeldung:</p>
<blockquote>
<p>Network is unreachable.</p>
</blockquote>
<p>(Anm. x hatte übrigens den Wert 1)</p>
<p>Somit ergeben sich mir zwei Fragen:</p>
<ol>
<li>Warum bekommen ich zwei unterschiedliche Fehlermeldungen? Die Zuweisung des Rückgabewertes von inet_pton() zu einer Integer-Variablen dürfte doch auf den Verbindungsaufbau keinen Einflusss haben;</li>
<li>Warum funktioniert mein connect()-Verbindungsaufbau nicht.</li>
</ol>
<p>(Hinweis: bin c++ Neuling :p )</p>
<p>Danke vorab für eure Kommentare/Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/324085/client-anwendung-mit-ipv6-connect-gt-invalid-argument-network-is-unreachable</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Jul 2026 20:26:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/324085.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 02 Mar 2014 18:03:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Client Anwendung mit IPv6: connect() --&amp;gt; Invalid argument &#x2F; Network is unreachable on Sun, 02 Mar 2014 18:03:30 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte eine eigene Serveranwendung auf einem Zielrechner mit einem Client über IPv6 ansprechen. Der Zielrechner ist auch über IPv6 erreichbar:</p>
<pre><code>$ping6 -I eth0 fe80::ba27:ebff:fed5:d633
PING fe80::ba27:ebff:fed5:d633(fe80::ba27:ebff:fed5:d633) from fe80::230:67ff:feb1:e3cf eth0: 56 data bytes
64 bytes from fe80::ba27:ebff:fed5:d633: icmp_seq=1 ttl=64 time=0.572 ms
64 bytes from fe80::ba27:ebff:fed5:d633: icmp_seq=2 ttl=64 time=0.722 ms
</code></pre>
<p>Mein Problem liegt momentan bei der Client-Anwendung, da ich leider nicht so richtig weiß, wie man die IP-Adresse vom Zielrechner dem sockaddr_in6 Datentyp zuweist. In meinem ersten Versuch habe ich es so gemacht:</p>
<pre><code>inet_pton(AF_INET6, &quot;fe80::ba27:ebff:fed5:d633&quot;, &amp;server_address.sin6_addr);
</code></pre>
<p>--&gt; Bei Programausführung wurde dann nach connect() die Fehlermeldung</p>
<blockquote>
<p>Invalid argument</p>
</blockquote>
<p>ausgegeben.</p>
<p>Der komplette Quellcode:</p>
<pre><code>#include &lt;stdio.h&gt;	/* für perror() */ 
#include &lt;sys/socket.h&gt;	/* für socket() */ 
#include &lt;unistd.h&gt;	/* für close()*/ 
#include &lt;netinet/in.h&gt;	/* für struct sockaddr */ 
#include &lt;stdlib.h&gt;	/* for exit() */ 
#include &lt;errno.h&gt;	/* für errno */ 
#include &lt;arpa/inet.h&gt;	/* für inet_addr */

int main() {

int client_fd, x;

/*** Anlegen der Zieladresse ***/
struct sockaddr_in6 server_address;
server_address.sin6_family=AF_INET6;
server_address.sin6_port=htons(9734);
inet_pton(AF_INET6, &quot;fe80::ba27:ebff:fed5:d633&quot;, &amp;server_address.sin6_addr);

/**** Anlegen eines Sockets ****/
client_fd = socket(PF_INET6, SOCK_STREAM, 0); 
if (client_fd &lt; 0) { 
	  printf(&quot;Socket kann nicht erstellt werden.\n&quot;); 
	  perror(&quot;socket error&quot;); 
	  close(client_fd); 
	  exit(errno); 
}

/*** Aufbauen der Verbindung ***/
	if (connect(client_fd, (struct sockaddr*)&amp;server_address, sizeof(server_address)) &lt; 0) {
		perror(&quot;Verbindungsfehler&quot;);
		exit(errno);
	}
	printf(&quot;established.\n&quot;);
}
</code></pre>
<p>Um dem Problem näher zu kommen, wollte ich mir dann ansehen was inet_pton zurück liefert und habe den Rückgabewert x zugeordnet:</p>
<pre><code>x=inet_pton(AF_INET6, &quot;fe80::ba27:ebff:fed5:d633&quot;, &amp;server_address.sin6_addr);
</code></pre>
<p>Der komplette Rest blieb unverändert. Doch nun kommt nach connect() als Fehlermeldung:</p>
<blockquote>
<p>Network is unreachable.</p>
</blockquote>
<p>(Anm. x hatte übrigens den Wert 1)</p>
<p>Somit ergeben sich mir zwei Fragen:</p>
<ol>
<li>Warum bekommen ich zwei unterschiedliche Fehlermeldungen? Die Zuweisung des Rückgabewertes von inet_pton() zu einer Integer-Variablen dürfte doch auf den Verbindungsaufbau keinen Einflusss haben;</li>
<li>Warum funktioniert mein connect()-Verbindungsaufbau nicht.</li>
</ol>
<p>(Hinweis: bin c++ Neuling :p )</p>
<p>Danke vorab für eure Kommentare/Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386111</guid><dc:creator><![CDATA[BigMan200]]></dc:creator><pubDate>Sun, 02 Mar 2014 18:03:30 GMT</pubDate></item><item><title><![CDATA[Reply to Client Anwendung mit IPv6: connect() --&amp;gt; Invalid argument &#x2F; Network is unreachable on Sun, 02 Mar 2014 18:06:06 GMT]]></title><description><![CDATA[<p>BigMan200 schrieb:</p>
<blockquote>
<p>(Hinweis: bin c++ Neuling :p )</p>
</blockquote>
<p>Das ist C.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386114</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 02 Mar 2014 18:06:06 GMT</pubDate></item><item><title><![CDATA[Reply to Client Anwendung mit IPv6: connect() --&amp;gt; Invalid argument &#x2F; Network is unreachable on Sun, 02 Mar 2014 18:09:32 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>BigMan200 schrieb:</p>
<blockquote>
<p>(Hinweis: bin c++ Neuling :p )</p>
</blockquote>
<p>Das ist C.</p>
</blockquote>
<p>Bin c++ und C Neuling<br />
(und wie hilft mir dies bei meinem Problem <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/2386117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386117</guid><dc:creator><![CDATA[BigMan200]]></dc:creator><pubDate>Sun, 02 Mar 2014 18:09:32 GMT</pubDate></item><item><title><![CDATA[Reply to Client Anwendung mit IPv6: connect() --&amp;gt; Invalid argument &#x2F; Network is unreachable on Sun, 02 Mar 2014 18:23:10 GMT]]></title><description><![CDATA[<p>BigMan200 schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>BigMan200 schrieb:</p>
<blockquote>
<p>(Hinweis: bin c++ Neuling :p )</p>
</blockquote>
<p>Das ist C.</p>
</blockquote>
<p>Bin c++ und C Neuling<br />
(und wie hilft mir dies bei meinem Problem <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>
</blockquote>
<p>So gefragt: Gar nicht.<br />
Aber es hilft dir eventuell bei deinem späteren Lernen. Denn wenn du etwas lernst, was du für etwas anderes hälst als es ist, ist das nicht ganz so toll.<br />
Und C++ und C gleichzeitig zu machen ist ... ungünstig.<br />
Trotz ihrer Ähnlichkeit sind das zwei verschiedene Sprachen, mit zwei verschiedenen Möglichkeiten und zwei verschiedene Arten zu programmieren.<br />
Aber das nur btw.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386118</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 02 Mar 2014 18:23:10 GMT</pubDate></item><item><title><![CDATA[Reply to Client Anwendung mit IPv6: connect() --&amp;gt; Invalid argument &#x2F; Network is unreachable on Sun, 02 Mar 2014 18:42:39 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>BigMan200 schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>BigMan200 schrieb:</p>
<blockquote>
<p>(Hinweis: bin c++ Neuling :p )</p>
</blockquote>
<p>Das ist C.</p>
</blockquote>
<p>Bin c++ und C Neuling<br />
(und wie hilft mir dies bei meinem Problem <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>
</blockquote>
<p>So gefragt: Gar nicht.<br />
Aber es hilft dir eventuell bei deinem späteren Lernen. Denn wenn du etwas lernst, was du für etwas anderes hälst als es ist, ist das nicht ganz so toll.<br />
Und C++ und C gleichzeitig zu machen ist ... ungünstig.<br />
Trotz ihrer Ähnlichkeit sind das zwei verschiedene Sprachen, mit zwei verschiedenen Möglichkeiten und zwei verschiedene Arten zu programmieren.<br />
Aber das nur btw.</p>
</blockquote>
<p>Meine Annahme: C++ = Ergänzung bzw. Erweiterung von C:<br />
Folgerung: was ein C Code ist, ist automatische auch ein C++ Code (aber nicht umgekehrt).<br />
Falls meine Annahme = unwahr; dann bitte nicht schlagen .. bin ich dann auch im falschen Forum, da hier nur C++.</p>
<p>Aber es ist schon richtig, dass ich in meinem Code keine C++ typischen Merkmale oder Möglichkeiten wie Objekt-Orientierung etc. brauche oder verwende.</p>
<p>Nun denn, jetzt gehe ich mal davon aus, dass ich hier nicht im falschen Forum bin, wie komme ich dann zu einer Lösung zu meiner C-Code-Problem? <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/2386124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386124</guid><dc:creator><![CDATA[BigMan200]]></dc:creator><pubDate>Sun, 02 Mar 2014 18:42:39 GMT</pubDate></item><item><title><![CDATA[Reply to Client Anwendung mit IPv6: connect() --&amp;gt; Invalid argument &#x2F; Network is unreachable on Sun, 02 Mar 2014 18:49:21 GMT]]></title><description><![CDATA[<p>BigMan200 schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>BigMan200 schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>BigMan200 schrieb:</p>
<blockquote>
<p>(Hinweis: bin c++ Neuling :p )</p>
</blockquote>
<p>Das ist C.</p>
</blockquote>
<p>Bin c++ und C Neuling<br />
(und wie hilft mir dies bei meinem Problem <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>
</blockquote>
<p>So gefragt: Gar nicht.<br />
Aber es hilft dir eventuell bei deinem späteren Lernen. Denn wenn du etwas lernst, was du für etwas anderes hälst als es ist, ist das nicht ganz so toll.<br />
Und C++ und C gleichzeitig zu machen ist ... ungünstig.<br />
Trotz ihrer Ähnlichkeit sind das zwei verschiedene Sprachen, mit zwei verschiedenen Möglichkeiten und zwei verschiedene Arten zu programmieren.<br />
Aber das nur btw.</p>
</blockquote>
<p>Meine Annahme: C++ = Ergänzung bzw. Erweiterung von C:<br />
Folgerung: was ein C Code ist, ist automatische auch ein C++ Code (aber nicht umgekehrt).<br />
Falls meine Annahme = unwahr; dann bitte nicht schlagen .. bin ich dann auch im falschen Forum, da hier nur C++.</p>
</blockquote>
<p>Deine Annahme stimmt. Für den Compiler ist (von einigen Kleinigkeiten mal abgesehen) C-Code C++-Code.<br />
Aber wenn du in C++ C programmierst, nutzt du das Potenzial von C++ nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386126</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 02 Mar 2014 18:49:21 GMT</pubDate></item><item><title><![CDATA[Reply to Client Anwendung mit IPv6: connect() --&amp;gt; Invalid argument &#x2F; Network is unreachable on Sun, 02 Mar 2014 18:50:49 GMT]]></title><description><![CDATA[<p>BigMan200 schrieb:</p>
<blockquote>
<p>(und wie hilft mir dies bei meinem Problem <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>
</blockquote>
<p>Gar nicht. Das liegt aber daran, dass du weder ein C++- noch ein C-Problem hast, sondern mit dem Socket-API deines Betriebssystems (Linux?) =&gt; falsches Forum.</p>
<p>Da ich mit sockets selten zu tun habe, kann ich dir auch nicht spontan weiterhelfen. Wenn du allerdings C++ programmieren möchtest, kann ich boost.asio empfehlen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386127</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 02 Mar 2014 18:50:49 GMT</pubDate></item><item><title><![CDATA[Reply to Client Anwendung mit IPv6: connect() --&amp;gt; Invalid argument &#x2F; Network is unreachable on Sun, 02 Mar 2014 19:00:00 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Das liegt aber daran, dass du weder ein C++- noch ein C-Problem hast, sondern mit dem Socket-API deines Betriebssystems (Linux?) =&gt; falsches Forum.</p>
</blockquote>
<p>Das ist doch schon mal ein konstruktiver Hinweis, der mich in eine neue Richtung schuppst. Irgendwie war ich nur auf meinen Quellcode fixiert, aber dass mein Betriebssystem (=Debian-Linux) &quot;verdreht&quot; sein könnte, daran hatte ich nicht noch nicht gedacht.</p>
<p>... jetzt würden mir aber die Leute im Linux-Forum wahrscheinlich sagen: geh' mit deinem C-Programm in ein C-Forum <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Muss wohl mal schauen, ob ich sowas wie ein Socket-Programmierungsforum finde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386133</guid><dc:creator><![CDATA[BigMan200]]></dc:creator><pubDate>Sun, 02 Mar 2014 19:00:00 GMT</pubDate></item><item><title><![CDATA[Reply to Client Anwendung mit IPv6: connect() --&amp;gt; Invalid argument &#x2F; Network is unreachable on Sun, 02 Mar 2014 19:14:49 GMT]]></title><description><![CDATA[<p>BigMan200 schrieb:</p>
<blockquote>
<p>... dass mein Betriebssystem (=Debian-Linux) &quot;verdreht&quot; sein könnte, daran hatte ich nicht noch nicht gedacht.</p>
</blockquote>
<p>Ich würde jetzt eher annehmen, das du das API falsch benutzt. Das hat aber immer noch nichts mit C++ oder C zu tun.</p>
<p>Wenn andere Programme IPv6 Verbindungen herstellen können, sollte das Betriebssystem soweit in Ordnung sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386137</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 02 Mar 2014 19:14:49 GMT</pubDate></item><item><title><![CDATA[Reply to Client Anwendung mit IPv6: connect() --&amp;gt; Invalid argument &#x2F; Network is unreachable on Sun, 02 Mar 2014 21:32:53 GMT]]></title><description><![CDATA[<p>[gelöscht]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386155</guid><dc:creator><![CDATA[BigMan200]]></dc:creator><pubDate>Sun, 02 Mar 2014 21:32:53 GMT</pubDate></item></channel></rss>