<?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[gethostbyname klappt nicht richtig]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich schreibe mir gerade einen kleinen TCP-Client.<br />
Jetzt versuche ich mir die IP Adresse über den Servernamen zu holen, per gethostbyname.<br />
Das klappt auch, nur wenn ich einen Server eingebe, den es gar nicht gibt, stürzt das Programm ab.<br />
Ich habe meine Vorgehensweise auch schon mit vielen Beispielcodes abgeglichen, nur finde ich den Fehler nicht.</p>
<pre><code class="language-cpp">struct hostent *ptrh;

ptrh = gethostbyname( hostnameOrIp );

if( ptrh == NULL )
{
   return SOCKET_ERROR;
}
else
{
   memcpy( &amp;(addr-&gt;sin_addr), ptrh-&gt;h_addr, ptrh-&gt;h_length );
}
</code></pre>
<p>Man sollte doch meinen, wenn es den Servernamen nicht bei mir gibt, sollte gethostbyname doch NULL zurück geben, das tut es aber nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/146635/gethostbyname-klappt-nicht-richtig</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 13:20:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146635.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 May 2006 15:13:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to gethostbyname klappt nicht richtig on Tue, 09 May 2006 15:13:54 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich schreibe mir gerade einen kleinen TCP-Client.<br />
Jetzt versuche ich mir die IP Adresse über den Servernamen zu holen, per gethostbyname.<br />
Das klappt auch, nur wenn ich einen Server eingebe, den es gar nicht gibt, stürzt das Programm ab.<br />
Ich habe meine Vorgehensweise auch schon mit vielen Beispielcodes abgeglichen, nur finde ich den Fehler nicht.</p>
<pre><code class="language-cpp">struct hostent *ptrh;

ptrh = gethostbyname( hostnameOrIp );

if( ptrh == NULL )
{
   return SOCKET_ERROR;
}
else
{
   memcpy( &amp;(addr-&gt;sin_addr), ptrh-&gt;h_addr, ptrh-&gt;h_length );
}
</code></pre>
<p>Man sollte doch meinen, wenn es den Servernamen nicht bei mir gibt, sollte gethostbyname doch NULL zurück geben, das tut es aber nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1054241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054241</guid><dc:creator><![CDATA[MichaelP]]></dc:creator><pubDate>Tue, 09 May 2006 15:13:54 GMT</pubDate></item><item><title><![CDATA[Reply to gethostbyname klappt nicht richtig on Tue, 09 May 2006 16:25:38 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr) { 
   long rc; 
   unsigned long ip; 

   HOSTENT* he; 

   if(hostnameOrIp==NULL || addr==NULL) 
      return SOCKET_ERROR; 
   ip=inet_addr(hostnameOrIp); 

   if(ip!=INADDR_NONE){ 
      addr-&gt;sin_addr.s_addr=ip; 
      return 0; 
   } else { 
      he=gethostbyname(hostnameOrIp); 
      if(he==NULL) { 
         return SOCKET_ERROR; 
      } else { 
         memcpy(&amp;(addr-&gt;sin_addr),he-&gt;h_addr_list[0],4); 
      } 
      return 0; 
   } 
}
</code></pre>
<p>MFG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1054284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054284</guid><dc:creator><![CDATA[teh_mastor]]></dc:creator><pubDate>Tue, 09 May 2006 16:25:38 GMT</pubDate></item><item><title><![CDATA[Reply to gethostbyname klappt nicht richtig on Tue, 09 May 2006 17:22:00 GMT]]></title><description><![CDATA[<p>Danke für den Codesnipsel, aber das ist einer der ersten die ich überprüft habe.<br />
Er macht am Ende nichts anderes als meiner, wenn gethostbyname fehlschlägt soll er angeblich einen Nullpointer zurück geben, tut er aber nicht.</p>
<p>Stattdessen stehen in he-&gt;h_addr_list Müllpointer drin, welche man nicht zu IP_adressen verarbeiten kann.</p>
<p>Hat noch jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1054315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054315</guid><dc:creator><![CDATA[MichaelP]]></dc:creator><pubDate>Tue, 09 May 2006 17:22:00 GMT</pubDate></item><item><title><![CDATA[Reply to gethostbyname klappt nicht richtig on Tue, 09 May 2006 17:32:01 GMT]]></title><description><![CDATA[<p>bitte zeig mal ein vollständiges beispiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1054329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054329</guid><dc:creator><![CDATA[........]]></dc:creator><pubDate>Tue, 09 May 2006 17:32:01 GMT</pubDate></item><item><title><![CDATA[Reply to gethostbyname klappt nicht richtig on Wed, 10 May 2006 06:37:58 GMT]]></title><description><![CDATA[<p>Ein vollständiges Beispiel dafür, das gethostbyname im Fehlerfalle nicht NULL ist?<br />
Das erste Posting nach meinem ist doch eine vollständige Funktion aus einem Beispiel. Da wird doch versucht zu ermitteln, ob der angegebene Host eine IP-Adresse war oder ein Hostname.<br />
Das Problem ist, das es so aber nicht funktioniert, falls es den Host nicht gibt, da dort wieder nur auf NULL geprüft wird.</p>
<pre><code class="language-cpp">.
.
.
he=gethostbyname(hostnameOrIp); 
if(he==NULL) {
.
.
.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1054584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054584</guid><dc:creator><![CDATA[MichaelP]]></dc:creator><pubDate>Wed, 10 May 2006 06:37:58 GMT</pubDate></item><item><title><![CDATA[Reply to gethostbyname klappt nicht richtig on Wed, 10 May 2006 07:48:57 GMT]]></title><description><![CDATA[<p>MSDN schrieb:</p>
<blockquote>
<p><strong>Note</strong> The gethostbyname function has been deprecated by the introduction of the getaddrinfo function. Developers creating Windows Sockets 2 applications are urged to use the getaddrinfo function instead of gethostbyname.</p>
</blockquote>
<p>Denk mal darüber nach.</p>
<p>Ansonsten könntest du auch nach dem Aufruf den Fehlerstatus abfragen (per WSAGetLastError()):</p>
<pre><code class="language-cpp">WSASetLastError(0);
he=gethostbyname(adresse);
if(WSAGetLastError()!=0)
  Fehler
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1054614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054614</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 10 May 2006 07:48:57 GMT</pubDate></item></channel></rss>