getservbyport und getservbyname



  • hi,

    Ich komme irgendwie mit meinem Programm nicht weiter !
    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 !

    Nur kommt dauernd "no such service found", egal was ich eingebe !
    Die jeweilige Funktion (getservbyport oder getservbyname), die aufgerufen wird, gibt anscheinend 0 oder nen Error zurück, hab bloß keine Ahnung wieso !

    Hier der Code dazu:

    #include <iostream>
    #include <WinSock2.h>
    #include <string>
    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), "tcp");
    	}
    	else
    	{
    		serv = getservbyname(servername, "tcp");
    	}
    	if (serv == 0)
    	{
    		cerr << "No such service found" << endl;
    		return 1;
    	}
    
    	port = ntohs(serv->s_port);
    	cout << port << " -> " << serv->s_name << endl;
    
    	// durch Liste mit Aliasen
    	for (int i = 0; serv->s_aliases[i] != NULL; i++)
    	{
    		cout << port << " -> " << serv->s_aliases[i] << " (Alias)" << endl;
    	}
    	return 0;
    }
    
    int main(int argc, char *argv[])
    {
    	for (int n = 1; n < argc; n++)
    	{
    		resolve(argv[n]);
    	}
    
    	return 0;
    }
    

    Bin bloß irgendwie zu dumm dazu, das zu kapieren !

    Hoffe, ihr könnt mir weiterhelfen !

    mfg



  • #include <WinSock2.h> klingt nach Windows. Dies ist das Subforum für den reinen C++-Standard. Poste lieber mal im WinAPI-Forum.



  • ok, erstelle dort nen Beitrag !

    ps: kann gelöscht werden 🙂

    mfg


Anmelden zum Antworten