<?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[Den Port aus sockaddr.sa_data[14]; auslesen?]]></title><description><![CDATA[<p>hallo cpp-forum,</p>
<p>ich fülle in meinem Programm ein struct addrinfo und erhalte mit getaddrinfo dann laut DNS gültige struct sockaddr zu denen ich mich verbinde.</p>
<pre><code>struct sockaddr {
   ushort sa_family;
   char   sa_data[14];
};
</code></pre>
<p>Nun möchte ich gerne aus char sa_data[14]; den Port auslesen. Der müsste doch dort drinnen stehen. Nur weiss ich nicht welche Felder des char array die Informationen enthalten.<br />
Kann mir das hier jemand von euch erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/210181/den-port-aus-sockaddr-sa_data-14-auslesen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 11:38:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/210181.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Apr 2008 08:17:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Den Port aus sockaddr.sa_data[14]; auslesen? on Tue, 08 Apr 2008 08:21:28 GMT]]></title><description><![CDATA[<p>hallo cpp-forum,</p>
<p>ich fülle in meinem Programm ein struct addrinfo und erhalte mit getaddrinfo dann laut DNS gültige struct sockaddr zu denen ich mich verbinde.</p>
<pre><code>struct sockaddr {
   ushort sa_family;
   char   sa_data[14];
};
</code></pre>
<p>Nun möchte ich gerne aus char sa_data[14]; den Port auslesen. Der müsste doch dort drinnen stehen. Nur weiss ich nicht welche Felder des char array die Informationen enthalten.<br />
Kann mir das hier jemand von euch erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488346</guid><dc:creator><![CDATA[solito]]></dc:creator><pubDate>Tue, 08 Apr 2008 08:21:28 GMT</pubDate></item><item><title><![CDATA[Reply to Den Port aus sockaddr.sa_data[14]; auslesen? on Tue, 08 Apr 2008 08:48:53 GMT]]></title><description><![CDATA[<p><a href="http://www.cplusplus.com/forum/unices/527/" rel="nofollow">http://www.cplusplus.com/forum/unices/527/</a>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488361</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 08 Apr 2008 08:48:53 GMT</pubDate></item><item><title><![CDATA[Reply to Den Port aus sockaddr.sa_data[14]; auslesen? on Tue, 08 Apr 2008 10:54:47 GMT]]></title><description><![CDATA[<p>muss ich das nicht mit ntohs() machen?</p>
<p>ich dachte es muss so gehen:<br />
da der port ja ein unsigned short ist wollte ich zwei char zu einem short zusammen fügen. wohl sa_data[14] und sa_data[13] oder die ersten beiden.<br />
nur wie? + geht ja nicht, das muss ja auf bit ebene geschehen. ich wollte nur nicht dez in dual umwandeln. dachte jmd hier kennt eine elegante möglichkeit.</p>
<pre><code class="language-cpp">...
/*EDIT: (so ist es richtig)*/
if (sa.sa_family == AF_INET)
{
	char buf[INET_ADDRSTRLEN];
	sockaddr_in&amp; sa_in = reinterpret_cast&lt;sockaddr_in&amp;&gt;(sa);
	inet_ntop(sa_in.sin_family, &amp;sa_in.sin_addr, buf, sizeof buf);
	return string(buf);
}
else if (sa.sa_family == AF_INET6)
{
	char buf[INET6_ADDRSTRLEN];
	sockaddr_in6&amp; sa_in6 = reinterpret_cast&lt;sockaddr_in6&amp;&gt;(sa);
	inet_ntop(sa_in6.sin6_family, &amp;sa_in6.sin6_addr, buf, sizeof buf);
	return string(buf);
}
...
</code></pre>
<p>habe ich schon doch so bekomme ich die ip (dottet) nicht den port.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488371</guid><dc:creator><![CDATA[solito]]></dc:creator><pubDate>Tue, 08 Apr 2008 10:54:47 GMT</pubDate></item><item><title><![CDATA[Reply to Den Port aus sockaddr.sa_data[14]; auslesen? on Tue, 08 Apr 2008 09:02:10 GMT]]></title><description><![CDATA[<p>Du solltest das Teil erstmal nach sockaddr_in casten, etwa so:</p>
<pre><code class="language-cpp">sockaddr my_sockaddr;
sockaddr_in&amp; inet_sockaddr = reinterpret_cast&lt;sockaddr_in&amp;&gt;(my_sockaddr);
</code></pre>
<p>Dann hast du da auch Felder für Port usw., die du dann noch mit ntohs usw. bearbeiten musst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488373</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 08 Apr 2008 09:02:10 GMT</pubDate></item><item><title><![CDATA[Reply to Den Port aus sockaddr.sa_data[14]; auslesen? on Tue, 08 Apr 2008 09:25:23 GMT]]></title><description><![CDATA[<p>super <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> und viel dank euch beiden. wie einfach es doch ist <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/1488386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488386</guid><dc:creator><![CDATA[solito]]></dc:creator><pubDate>Tue, 08 Apr 2008 09:25:23 GMT</pubDate></item><item><title><![CDATA[Reply to Den Port aus sockaddr.sa_data[14]; auslesen? on Tue, 08 Apr 2008 12:41:24 GMT]]></title><description><![CDATA[<p>nimm doch getnameinfo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1488488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1488488</guid><dc:creator><![CDATA[............]]></dc:creator><pubDate>Tue, 08 Apr 2008 12:41:24 GMT</pubDate></item></channel></rss>