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
-
Naja, ich würde mal sagen Du hast vergessen "WSAStartup" aufzurufen...
Füge noch ganz am Anfang in main Folgendes hinzu, dann geht es:WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD( 2, 2 ); int err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { /* Tell the user that we could not find a usable */ /* WinSock DLL. */ return 1; }
-
ah stimmt ja, total vergessen
ich danke dir
mfg