<?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[addrinfo kompatibel zu IPv6 ?]]></title><description><![CDATA[<p>Hi, bin grad dabei mich mit den Änderungen von IPv6 vertraut zu machen.<br />
Da bin ich auf etwas intersantes gestoßen. Laut der MSDN wäre sockaddr nicht kompatibel zu IPv6</p>
<blockquote>
<p>Typically, many applications used the sockaddr structure to store protocol-independent addresses, or the sockaddr_in structure for IP addresses. Neither the sockaddr structure nor the sockaddr_in structure is large enough to hold IPv6 addresses, and therefore both are insufficient if your application is to be IPv6 compatible.</p>
</blockquote>
<p>Aber die Struktur</p>
<pre><code class="language-cpp">addrinfo
</code></pre>
<p>ist ja ansich für IPv6 gedacht oder nicht ?<br />
So, aber der Aufbau sieht hier folgender Maßen aus:</p>
<pre><code class="language-cpp">struct addrinfo {
	int     ai_flags;
	int     ai_family;
	int     ai_socktype;
	int     ai_protocol;
	size_t  ai_addrlen;
	char   *ai_canonname;
	struct sockaddr  *ai_addr; //Aha !
	struct addrinfo  *ai_next;
};
</code></pre>
<p>So, und wenn man sich nun die Implentierung von sockaddr ansieht:</p>
<pre><code class="language-cpp">struct sockaddr {
	u_short sa_family;
	char	sa_data[14]; //sind das nicht 2 chars zuwenig für 128 bit ?
};
</code></pre>
<p>So, nun stehe ich vor einem Verständnisproblem. Einerseits meint die MSDN<br />
addrinfo sei dafür gedacht um NameResolving für IPv6 zu garantieren, andererseits werden Strukturen implemtiert, die das anscheined garnicht fassen können. Oder renn ich grad vor eine Wand ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/213709/addrinfo-kompatibel-zu-ipv6</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 08:05:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/213709.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 May 2008 21:13:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Tue, 20 May 2008 21:13:33 GMT]]></title><description><![CDATA[<p>Hi, bin grad dabei mich mit den Änderungen von IPv6 vertraut zu machen.<br />
Da bin ich auf etwas intersantes gestoßen. Laut der MSDN wäre sockaddr nicht kompatibel zu IPv6</p>
<blockquote>
<p>Typically, many applications used the sockaddr structure to store protocol-independent addresses, or the sockaddr_in structure for IP addresses. Neither the sockaddr structure nor the sockaddr_in structure is large enough to hold IPv6 addresses, and therefore both are insufficient if your application is to be IPv6 compatible.</p>
</blockquote>
<p>Aber die Struktur</p>
<pre><code class="language-cpp">addrinfo
</code></pre>
<p>ist ja ansich für IPv6 gedacht oder nicht ?<br />
So, aber der Aufbau sieht hier folgender Maßen aus:</p>
<pre><code class="language-cpp">struct addrinfo {
	int     ai_flags;
	int     ai_family;
	int     ai_socktype;
	int     ai_protocol;
	size_t  ai_addrlen;
	char   *ai_canonname;
	struct sockaddr  *ai_addr; //Aha !
	struct addrinfo  *ai_next;
};
</code></pre>
<p>So, und wenn man sich nun die Implentierung von sockaddr ansieht:</p>
<pre><code class="language-cpp">struct sockaddr {
	u_short sa_family;
	char	sa_data[14]; //sind das nicht 2 chars zuwenig für 128 bit ?
};
</code></pre>
<p>So, nun stehe ich vor einem Verständnisproblem. Einerseits meint die MSDN<br />
addrinfo sei dafür gedacht um NameResolving für IPv6 zu garantieren, andererseits werden Strukturen implemtiert, die das anscheined garnicht fassen können. Oder renn ich grad vor eine Wand ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513407</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Tue, 20 May 2008 21:13:33 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Tue, 20 May 2008 21:19:50 GMT]]></title><description><![CDATA[<p>1. gehört in den winapi threa <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="🙂"
    /><br />
2. siehe msdn unter sockaddr_in6</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513409</guid><dc:creator><![CDATA[Fencer]]></dc:creator><pubDate>Tue, 20 May 2008 21:19:50 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Tue, 20 May 2008 21:27:46 GMT]]></title><description><![CDATA[<p>ähmm <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="🙄"
    /><br />
1. sry <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>2. Hmm, ja es gibt in der Tat IPv6 Strukturen (in6_addr) aber die addrinfo hat eben als Adresse eine Variable vom Typp sockaddr... Oder was meinst du jetzt genau ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513416</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Tue, 20 May 2008 21:27:46 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Tue, 20 May 2008 21:31:56 GMT]]></title><description><![CDATA[<p>Mir ist grade aufgefallen, dass sockaddr ja genau 16 bytes groß ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /><br />
short + 14 bytes = 16 <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>Nagut ich nehme an, so ist es dann geregelt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513420</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Tue, 20 May 2008 21:31:56 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Tue, 20 May 2008 21:52:22 GMT]]></title><description><![CDATA[<p>ai_addr kann auch auf eine größere Struktur zeigen, deshalb gibts doch ai_addrlen. sizeof(sockaddr_in6) ist bei mir 28.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513427</guid><dc:creator><![CDATA[ööööööö]]></dc:creator><pubDate>Tue, 20 May 2008 21:52:22 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Tue, 20 May 2008 22:42:16 GMT]]></title><description><![CDATA[<p>so hab ich das gemeint:</p>
<pre><code class="language-cpp">addrinfo hints,*results=NULL;
	char* name=&quot;altavista.ipv6.digital.com&quot;;
	char* port=&quot;80&quot;;
	sockaddr_in6 *erg;
	memset(&amp;hints,0,sizeof(hints));
	hints.ai_family=AF_INET6;
	hints.ai_socktype=SOCK_STREAM;
	hints.ai_protocol = IPPROTO_TCP;
	if(getaddrinfo(name,port,&amp;hints,&amp;results)!=0)
	{
		cout&lt;&lt;&quot;Fehler bei getaddrinfo &quot;&lt;&lt;::WSAGetLastError()&lt;&lt;endl;
		return 1;
	}
	if(results-&gt;ai_family|AF_INET6)
	{	
		cout&lt;&lt;&quot;Ipv6 ergebnis&quot;&lt;&lt;endl;
		cout&lt;&lt;results-&gt;ai_addrlen&lt;&lt;&quot; &quot;&lt;&lt;sizeof(sockaddr_in)&lt;&lt;&quot; &quot;&lt;&lt;sizeof(sockaddr_in6)&lt;&lt;endl;
		erg=(sockaddr_in6*)results-&gt;ai_addr;
	}
</code></pre>
<p>hier kannst du sehen dass die größe der zurückgegebenen ai_addr gleich sockaddr_in6 ist und das du einfach casten musst.</p>
<p>greetings</p>
<p>Fencer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513452</guid><dc:creator><![CDATA[Fencer]]></dc:creator><pubDate>Tue, 20 May 2008 22:42:16 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Wed, 21 May 2008 12:32:47 GMT]]></title><description><![CDATA[<p>und wie kann ich dann eine Ipv6 Adresse umwandeln in einen string bzw. von string in eine Adresse ? inet_addr() gibt es ja für in_addr oder kann man da ruhig ohne bedenken casten ??? <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="😕"
    /></p>
<pre><code class="language-cpp">sockaddr_in6 test;

inet_addr( reinterpret_cast&lt;sockaddr_in*&gt;(test)-&gt;sin_addr );
</code></pre>
<p>Gruß Chris <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513526</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Wed, 21 May 2008 12:32:47 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Wed, 21 May 2008 12:36:26 GMT]]></title><description><![CDATA[<p>getnameinfo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513529</guid><dc:creator><![CDATA[ööööööö]]></dc:creator><pubDate>Wed, 21 May 2008 12:36:26 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Wed, 21 May 2008 12:40:44 GMT]]></title><description><![CDATA[<p>inet_addr6</p>
<p>Zum Hintergrund nochmal:<br />
Im Grunde genommen sind struct sockaddr_* Ableitungen von struct sockaddr. Nicht im Sinne von Objektorientierung, aber es soll das gleiche erreicht werden. Jede Funktion, die mit Sockets arbeitet, bekommt Zeiger auf struct sockaddr. Anhand der Adressfamilie (die in allen sockaddr_* Strukturen an derselben Stelle steht) und der Größe der Struktur weiss diese Funktion dann, ob es sich um sockaddr_in, sockaddr_in6, sockaddr_un, sockaddr_at etc. handelt. Das heisst aber <strong>nicht</strong>, dass man jede beliebige sockaddr_* Struktur auf eine andere sockaddr_* Struktur casten darf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513536</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 21 May 2008 12:40:44 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Wed, 21 May 2008 12:53:47 GMT]]></title><description><![CDATA[<p>Ich will dich ja nicht iwie korrigieren.. aber inet_addr6 find ich garnicht bei google... ok 3-4 artikel.. aber sonst.. Ich habe auf der MSDN Seite RtlIpv6AddressToString gefunden, aber die gibet natürlcih nur für Windoof.<br />
Wie geht das mit getnameinfo ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513545</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Wed, 21 May 2008 12:53:47 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Wed, 21 May 2008 13:00:53 GMT]]></title><description><![CDATA[<p>Entschuldige, stimmt.</p>
<p>Ein Ersatz für inet_addr für v4 und v6 ist inet_pton</p>
<pre><code class="language-cpp">sockaddr_in a;
a.sin_addr.s_addr = inet_addr(&quot;...&quot;);

// äquivalent ui
sockaddr_in a;
inet_pton(AF_INET, &quot;...&quot;, &amp;a.sin_addr);

// für ipv6
sockaddr_in6 a;
inet_pton(AF_INET6, &quot;...&quot;, &amp;a.sin6_addr);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1513549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513549</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 21 May 2008 13:00:53 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Wed, 21 May 2008 13:16:09 GMT]]></title><description><![CDATA[<p>ähm, diese Funktion gibts anscheinend nicht für Windows, sprich ich muss &quot;RtlIpv6AddressToString&quot; oder so ähnlich für windows benutzen richtig ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513557</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Wed, 21 May 2008 13:16:09 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Wed, 21 May 2008 15:10:49 GMT]]></title><description><![CDATA[<p>In Winsock gibt es WSAStringToAddress. RtlIpv6StringToAddress ist eine Bibliotheksfunktion, die laut MSDN zwar kein Winsock braucht, aber nicht im PSDK sondern nur im DDK/WDK enthalten ist (was auch immer das für einen Sinn haben mag).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513663</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 21 May 2008 15:10:49 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Wed, 21 May 2008 16:00:34 GMT]]></title><description><![CDATA[<p>Foxx90 du bist dumm, mehr kann man dazu eigentlich nicht sagen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513712</guid><dc:creator><![CDATA[hustbär]]></dc:creator><pubDate>Wed, 21 May 2008 16:00:34 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Wed, 21 May 2008 16:05:51 GMT]]></title><description><![CDATA[<p>netter beitrag</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513715</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Wed, 21 May 2008 16:05:51 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Wed, 21 May 2008 17:50:41 GMT]]></title><description><![CDATA[<blockquote>
<p>Wie geht das mit getnameinfo?</p>
</blockquote>
<p><a href="http://msdn.microsoft.com/en-us/library/ms738532.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms738532.aspx</a></p>
<p>Unten auf der Seite ist ein Beispiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513806</guid><dc:creator><![CDATA[ööööööö]]></dc:creator><pubDate>Wed, 21 May 2008 17:50:41 GMT</pubDate></item><item><title><![CDATA[Reply to addrinfo kompatibel zu IPv6 ? on Sat, 24 May 2008 16:02:08 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-403.html" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" 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/1515867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1515867</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sat, 24 May 2008 16:02:08 GMT</pubDate></item></channel></rss>