<?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[getservbyport und getservbyname]]></title><description><![CDATA[<p>hi,</p>
<p>Ich komme irgendwie mit meinem Programm nicht weiter !<br />
Ich geb übergeb meinem Programm über ein Kommandozeilenargument eine Portnummer oder einen Dienstnamen und will dazu den Dienstnamen oder die Portnummer und evtl Aliase erhalten !</p>
<p>Nur kommt dauernd &quot;no such service found&quot;, egal was ich eingebe !<br />
Die jeweilige Funktion (getservbyport oder getservbyname), die aufgerufen wird, gibt anscheinend 0 oder nen Error zurück, hab bloß keine Ahnung wieso !</p>
<p>Hier der Code dazu:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;WinSock2.h&gt;
#include &lt;string&gt;
using namespace std;

int resolve (const char *servername)
{
	// Infos zu den Diensten
	struct servent *serv;
	unsigned short port;

	// handelt es sich um eine Portnummer ?
	port = (unsigned short)strtoul(servername, NULL, 0);

	if (port)
	{
		serv = getservbyport(htons(port), &quot;tcp&quot;);
	}
	else
	{
		serv = getservbyname(servername, &quot;tcp&quot;);
	}
	if (serv == 0)
	{
		cerr &lt;&lt; &quot;No such service found&quot; &lt;&lt; endl;
		return 1;
	}

	port = ntohs(serv-&gt;s_port);
	cout &lt;&lt; port &lt;&lt; &quot; -&gt; &quot; &lt;&lt; serv-&gt;s_name &lt;&lt; endl;

	// durch Liste mit Aliasen
	for (int i = 0; serv-&gt;s_aliases[i] != NULL; i++)
	{
		cout &lt;&lt; port &lt;&lt; &quot; -&gt; &quot; &lt;&lt; serv-&gt;s_aliases[i] &lt;&lt; &quot; (Alias)&quot; &lt;&lt; endl;
	}
	return 0;
}

int main(int argc, char *argv[])
{
	for (int n = 1; n &lt; argc; n++)
	{
		resolve(argv[n]);
	}

	return 0;
}
</code></pre>
<p>Bin bloß irgendwie zu dumm dazu, das zu kapieren !</p>
<p>Hoffe, ihr könnt mir weiterhelfen !</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/227281/getservbyport-und-getservbyname</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 03:01:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/227281.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 13 Nov 2008 11:02:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to getservbyport und getservbyname on Thu, 13 Nov 2008 11:02:27 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>Ich komme irgendwie mit meinem Programm nicht weiter !<br />
Ich geb übergeb meinem Programm über ein Kommandozeilenargument eine Portnummer oder einen Dienstnamen und will dazu den Dienstnamen oder die Portnummer und evtl Aliase erhalten !</p>
<p>Nur kommt dauernd &quot;no such service found&quot;, egal was ich eingebe !<br />
Die jeweilige Funktion (getservbyport oder getservbyname), die aufgerufen wird, gibt anscheinend 0 oder nen Error zurück, hab bloß keine Ahnung wieso !</p>
<p>Hier der Code dazu:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;WinSock2.h&gt;
#include &lt;string&gt;
using namespace std;

int resolve (const char *servername)
{
	// Infos zu den Diensten
	struct servent *serv;
	unsigned short port;

	// handelt es sich um eine Portnummer ?
	port = (unsigned short)strtoul(servername, NULL, 0);

	if (port)
	{
		serv = getservbyport(htons(port), &quot;tcp&quot;);
	}
	else
	{
		serv = getservbyname(servername, &quot;tcp&quot;);
	}
	if (serv == 0)
	{
		cerr &lt;&lt; &quot;No such service found&quot; &lt;&lt; endl;
		return 1;
	}

	port = ntohs(serv-&gt;s_port);
	cout &lt;&lt; port &lt;&lt; &quot; -&gt; &quot; &lt;&lt; serv-&gt;s_name &lt;&lt; endl;

	// durch Liste mit Aliasen
	for (int i = 0; serv-&gt;s_aliases[i] != NULL; i++)
	{
		cout &lt;&lt; port &lt;&lt; &quot; -&gt; &quot; &lt;&lt; serv-&gt;s_aliases[i] &lt;&lt; &quot; (Alias)&quot; &lt;&lt; endl;
	}
	return 0;
}

int main(int argc, char *argv[])
{
	for (int n = 1; n &lt; argc; n++)
	{
		resolve(argv[n]);
	}

	return 0;
}
</code></pre>
<p>Bin bloß irgendwie zu dumm dazu, das zu kapieren !</p>
<p>Hoffe, ihr könnt mir weiterhelfen !</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613989</guid><dc:creator><![CDATA[R3dNeXX]]></dc:creator><pubDate>Thu, 13 Nov 2008 11:02:27 GMT</pubDate></item><item><title><![CDATA[Reply to getservbyport und getservbyname on Mon, 17 Nov 2008 08:46:09 GMT]]></title><description><![CDATA[<p>Naja, ich würde mal sagen Du hast vergessen &quot;WSAStartup&quot; aufzurufen...<br />
Füge noch ganz am Anfang in main Folgendes hinzu, dann geht es:</p>
<pre><code class="language-cpp">WORD wVersionRequested;
  WSADATA wsaData;
  wVersionRequested = MAKEWORD( 2, 2 );
  int err = WSAStartup( wVersionRequested, &amp;wsaData );
  if ( err != 0 ) {
    /* Tell the user that we could not find a usable */
    /* WinSock DLL.                                  */
    return 1;
  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1615821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1615821</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 17 Nov 2008 08:46:09 GMT</pubDate></item><item><title><![CDATA[Reply to getservbyport und getservbyname on Mon, 17 Nov 2008 09:02:24 GMT]]></title><description><![CDATA[<p>ah stimmt ja, total vergessen</p>
<p>ich danke dir <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="👍"
    /></p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1615825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1615825</guid><dc:creator><![CDATA[R3dNeXX]]></dc:creator><pubDate>Mon, 17 Nov 2008 09:02:24 GMT</pubDate></item></channel></rss>