Portnummer abfragen. (Sockets)



  • Hallo, ich habe das Problem, dass ich doch keine vernünftige Portnummer abfragen kann.
    Das ist mein bisheriger Code:

    sockaddr_in clientAddr;
       socklen_t addr_len = sizeof(clientAddr);
       int client_socket;
    
    //usw..
       client_socket = accept(m_iSocket, (struct sockaddr*) &clientAddr, &addr_len);
    
       if (client_socket == -1) {
    
    //usw...
    
          printf("Client from IP: %s\n", inet_ntoa(clientAddr.sin_addr));
          cout<<"Client from port: "<<ntohs(clientAddr.sin_port);
    

    Ja... die erste Ausgabe liefert eine richtige IP-Adresse, aber die Portnummer kriege ich leider nicht aus der Client-Struct heraus. Ich habe wohl irgendeine Kleinigkeit falsch gemacht, kann mir jemand sagen, an was es liegt?!



  • Was wird denn ausgegeben und was hast du erwartet?
    Simon



  • Client from IP: 127.0.0.1
    Client from port: 154361
    

    da ich mich über telnet verbinde, müsste der telnet port automatisch zugewiesen werden?! der server läuft auf 7000.
    erwartet habe ich einen wert kleiner als 50 000, weil es doch ein os maximum gibt, oder?

    bisher funktioniert mein server so:
    wenn ein client sich verbindet, wird er in einer liste gespeichert. wenn ich von einem client zu einem andern senden möchte, wollte ich über einen ip-vergleich (ob er in der liste überhaupt eingetragen ist) das weiterleiten übernehmen. so sollte das auch mit den ports laufen. aber ich kann mir so einen großen wert nicht vorstellen.



  • jetzt habe ich mal nen client geschrieben der sich über port 12345 verbinden soll. angezeigt wird mir 123451. das ist schon nicht so scheiße...
    mit htons kommt der selbe kappes. irgendwie merkwürdig!



  • es wird bei jeder portnummer anscheinend ne 1 drangehangen.



  • dgrat schrieb:

    es wird bei jeder portnummer anscheinend ne 1 drangehangen.

    Müsste ein Problem mit der Ausgabe sein. Mach mal bei cout<<"Client from port: "<<ntohs(clientAddr.sin_port); ein <<endl hinten dran.



  • ach shit, das stimmt. ich hatte noch eine ausgabe für meine listengröße mit dranhängen.


Anmelden zum Antworten