<?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[Socket-Verständnisproblem (was: ICH bin zu BLÖD !!!)]]></title><description><![CDATA[<p>Hi,</p>
<pre><code>#include &lt;windows.h&gt;
#include &lt;winsock.h&gt;  
#include &lt;iostream&gt;
#pragma comment(lib, &quot;ws2_32.lib&quot;)  

using namespace std;

int main(void)
{
    char szHostname[255];
    char *szIPAddress;
    WSADATA wsadata;
    PHOSTENT phostent;

    if(WSAStartup(MAKEWORD(2, 0), &amp;wsadata) == 0)
    {
        if(gethostname(szHostname, sizeof(szHostname)) == 0)
            if((phostent = gethostbyname(szHostname)) != NULL)
                szIPAddress = inet_ntoa(*(struct in_addr *)*phostent-&gt;h_addr_list);
        WSACleanup();
    } 
    cout &lt;&lt; &quot;IP-Adresse: &quot; &lt;&lt; szIPAddress &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Also ich versteh ja das obrige listing soweit ganz gut nur werd' ich<br />
aus folgender Zeile nicht schlau <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>szIPAddress = inet_ntoa(*(struct in_addr *)*phostent-&gt;h_addr_list);
</code></pre>
<p>hab inet_ntoa und in_addr auch schon in der MSDN nachgeschlagen<br />
nur irgendwie hat mich das auch nicht weitergebracht.</p>
<p>Was ich nicht verstehe : <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>+ warum lässt sich das listing auch ohne &quot;struct&quot; einwandfrei compilieren ?<br />
+ warum wird szIPAddress als Pointer declariert (char *szIPAddress) ?<br />
+ was genau bewirkt (struct in_addr <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="😉"
    /> ? geht es nicht auch ohne ?<br />
+ müsste es nicht &amp;phostent-&gt;h_addr_list heissen ? bzw. inet_ntoa(&amp;(struct in_addr &amp;)&amp;phostent-&gt;h_addr_list);<br />
+ warum heisst es PHOSTENT phostent und nicht HOSTENT phostent ?</p>
<p>Ich hoffe ihr könnt mir da weiterhelfen.</p>
<p>DANKE schonmal im Voraus.</p>
<p>MfG</p>
<p><strong>edit:</strong> Bitte aussagekräftigen Titel verwenden: wmfrs</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/79799/socket-verständnisproblem-was-ich-bin-zu-blöd</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 02:52:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/79799.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Jul 2004 15:24:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Socket-Verständnisproblem (was: ICH bin zu BLÖD !!!) on Fri, 16 Jul 2004 08:47:33 GMT]]></title><description><![CDATA[<p>Hi,</p>
<pre><code>#include &lt;windows.h&gt;
#include &lt;winsock.h&gt;  
#include &lt;iostream&gt;
#pragma comment(lib, &quot;ws2_32.lib&quot;)  

using namespace std;

int main(void)
{
    char szHostname[255];
    char *szIPAddress;
    WSADATA wsadata;
    PHOSTENT phostent;

    if(WSAStartup(MAKEWORD(2, 0), &amp;wsadata) == 0)
    {
        if(gethostname(szHostname, sizeof(szHostname)) == 0)
            if((phostent = gethostbyname(szHostname)) != NULL)
                szIPAddress = inet_ntoa(*(struct in_addr *)*phostent-&gt;h_addr_list);
        WSACleanup();
    } 
    cout &lt;&lt; &quot;IP-Adresse: &quot; &lt;&lt; szIPAddress &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Also ich versteh ja das obrige listing soweit ganz gut nur werd' ich<br />
aus folgender Zeile nicht schlau <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>szIPAddress = inet_ntoa(*(struct in_addr *)*phostent-&gt;h_addr_list);
</code></pre>
<p>hab inet_ntoa und in_addr auch schon in der MSDN nachgeschlagen<br />
nur irgendwie hat mich das auch nicht weitergebracht.</p>
<p>Was ich nicht verstehe : <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>+ warum lässt sich das listing auch ohne &quot;struct&quot; einwandfrei compilieren ?<br />
+ warum wird szIPAddress als Pointer declariert (char *szIPAddress) ?<br />
+ was genau bewirkt (struct in_addr <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="😉"
    /> ? geht es nicht auch ohne ?<br />
+ müsste es nicht &amp;phostent-&gt;h_addr_list heissen ? bzw. inet_ntoa(&amp;(struct in_addr &amp;)&amp;phostent-&gt;h_addr_list);<br />
+ warum heisst es PHOSTENT phostent und nicht HOSTENT phostent ?</p>
<p>Ich hoffe ihr könnt mir da weiterhelfen.</p>
<p>DANKE schonmal im Voraus.</p>
<p>MfG</p>
<p><strong>edit:</strong> Bitte aussagekräftigen Titel verwenden: wmfrs</p>
]]></description><link>https://www.c-plusplus.net/forum/post/560625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/560625</guid><dc:creator><![CDATA[dideldum04]]></dc:creator><pubDate>Fri, 16 Jul 2004 08:47:33 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Verständnisproblem (was: ICH bin zu BLÖD !!!) on Wed, 14 Jul 2004 16:27:59 GMT]]></title><description><![CDATA[<p>dideldum04 schrieb:</p>
<blockquote>
<p>+ warum wird szIPAddress als Pointer declariert (char *szIPAddress) ?</p>
</blockquote>
<p>Weil inet_ntoa char* als Rückgabetyp hat <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>
<p>dideldum04 schrieb:</p>
<blockquote>
<p>+ was genau bewirkt (struct in_addr <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="😉"
    /> ? geht es nicht auch ohne ?</p>
</blockquote>
<p>Das ist ein Cast - damit sagst du dem Compiler, dass du schlauer bist als er und das als Pointer auf eine in_addr-Struktur interpretiert werden soll.</p>
<p>dideldum04 schrieb:</p>
<blockquote>
<p>+ müsste es nicht &amp;phostent-&gt;h_addr_list heissen ? bzw. inet_ntoa(&amp;(struct in_addr &amp;)&amp;phostent-&gt;h_addr_list);</p>
</blockquote>
<p>Wie kommst du denn darauf <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="😮"
    /> Das sind Pointer, die du dereferenzieren willst - und das macht man eben mit * <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="🤡"
    /><br />
Mit &amp; kannst du dir von einer &quot;normalen&quot; Variable die Adresse holen - und vieles anderes mehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>dideldum04 schrieb:</p>
<blockquote>
<p>+ warum heisst es PHOSTENT phostent und nicht HOSTENT phostent ?</p>
</blockquote>
<p>Weil du auch hier einen Pointer auf HOSTENT haben willst. In der WinAPI sind die P's vor Datentypen meist (immer?) Deklarationen für Pointer auf den entsprechenden Datentyp. Das soll dann zur besseren Lesbarkeit dienen - denk ich mal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/560677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/560677</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Wed, 14 Jul 2004 16:27:59 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Verständnisproblem (was: ICH bin zu BLÖD !!!) on Wed, 14 Jul 2004 20:27:58 GMT]]></title><description><![CDATA[<p>danke erstmal für die antwort <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>
<p>Also ich versteh das mit den Zeigern nicht ganz <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>
<p>Ist denn</p>
<pre><code>pchar test;
</code></pre>
<p>dasselbe wie</p>
<pre><code>char* test;
</code></pre>
<p>bzw.</p>
<pre><code>char *test;
</code></pre>
<p>?</p>
<p>Ich dachte einem Zeiger weisst man mit &amp; einen wert zu also z.B.</p>
<pre><code>int zahl = 1;
int *zahl2;
*zahl2 = &amp;zahl; //dann wäre ja *zahl2 = 1 richtig ?
</code></pre>
<p>Also könnte ich auch folgendes schreiben ?</p>
<pre><code>*zahl2 = zahl;
</code></pre>
<p>Oder kann ein zeiger selbst auch einen wert annehmen ohne ihm vorher den speicherbereich einer varibalen zuzuordnen z.B. char *test = &quot;Test&quot;.</p>
<p>Und was genau meinst du mit &quot;casten&quot; ? <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/560901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/560901</guid><dc:creator><![CDATA[dideldum04]]></dc:creator><pubDate>Wed, 14 Jul 2004 20:27:58 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Verständnisproblem (was: ICH bin zu BLÖD !!!) on Thu, 15 Jul 2004 10:47:35 GMT]]></title><description><![CDATA[<p>Grundlagen???<br />
Kennst Du vielleicht dieses hier?</p>
<pre><code class="language-cpp">typedef char* pchar;
</code></pre>
<p>Genau sowas wird in einem der vielen Windows-Header gemacht mit ich-weiss-nicht-wievielen Datentypen. Und wo Strukturen definiert werden, werden <strong>immer</strong> direkt auch dazugehörige Pointer mittels typedef erstellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/561212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/561212</guid><dc:creator><![CDATA[Deadlef]]></dc:creator><pubDate>Thu, 15 Jul 2004 10:47:35 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Verständnisproblem (was: ICH bin zu BLÖD !!!) on Thu, 15 Jul 2004 15:37:04 GMT]]></title><description><![CDATA[<p>dideldum04 schrieb:</p>
<blockquote>
<p>Also ich versteh das mit den Zeigern nicht ganz <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>
<p>Ist denn</p>
<pre><code>pchar test;
</code></pre>
<p>dasselbe wie</p>
<pre><code>char* test;
</code></pre>
<p>bzw.</p>
<pre><code>char *test;
</code></pre>
<p>?</p>
</blockquote>
<p>Wenn du PCHAR schreibst ist alles das selbe <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>
<p>dideldum04 schrieb:</p>
<blockquote>
<p>Ich dachte einem Zeiger weisst man mit &amp; einen wert zu also z.B.</p>
<pre><code>int zahl = 1;
int *zahl2;
*zahl2 = &amp;zahl; //dann wäre ja *zahl2 = 1 richtig ?
</code></pre>
</blockquote>
<p>Dem Zeiger kannst du die Adresse eines Speicherbereiches zuweisen, die du z.B. von new bekommst oder auch die Adresse eine anderen Variable (bekommst du mit &amp;)<br />
In deinem Beispiel greifst du jetzt also mit *zahl2 und zahl auf den selben Speicherbereich zu - sprich: wenn du eines änderst ist auch das andere quasi geändert <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="😉"
    /><br />
Du solltest dir wohl die Grundlagen nocheinmal etwas näher anschauen. <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>dideldum04 schrieb:</p>
<blockquote>
<p>Also könnte ich auch folgendes schreiben ?</p>
<pre><code>*zahl2 = zahl;
</code></pre>
</blockquote>
<p>Solange du keinen Speicher reserviert hast geht das so nicht - du bekommst eine Speicherzugriffsverletzung.</p>
<p>dideldum04 schrieb:</p>
<blockquote>
<p>Oder kann ein zeiger selbst auch einen wert annehmen ohne ihm vorher den speicherbereich einer varibalen zuzuordnen z.B. char *test = &quot;Test&quot;.</p>
</blockquote>
<p>Bevor der Pointer nicht auf gültigen Speicher zeigt kann er auch keine Werte speichern. Dein Beispiel geht aber trotzden, da er dann eben auf den Speicher der String-Literal (schreibt man das so?) zeigt.</p>
<p>dideldum04 schrieb:</p>
<blockquote>
<p>Und was genau meinst du mit &quot;casten&quot;? <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>Du sagst dem Compiler damit, dass er diesen Speicher anders zu interpretieren hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/561519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/561519</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Thu, 15 Jul 2004 15:37:04 GMT</pubDate></item></channel></rss>