TCP Server besetzt kein Port (Linux)

  • C++/CLI

    TCP Server besetzt kein Port (Linux)

    Hallo Leute,

    ich versuche momentan ein TCP Server auf meinem Linux Server zum laufen bringen.
    Kurz zu meinem Problem:
    Der Server der startet sich auch (angeblich) laut der ausgabe richtig, doch sobald ich mit nmap den Port auf meinem linux server scannen sagt nmap, dass dort kein programm läuft. Also läufte doch mein Server da nicht.

    Hier einmal der Output meiner Console:
    bei Serverstart:

    Server wird gestartet....
    Socket wird erstellt...
    Socket wurde erfolgreich erstellt!
    Eine Adresse wird erstellt ...
    Eine Adresse wurde erfolgreich hergestellt!
    Warteschlange wird erstellt...
    Es wurde eine Warteschlange erstellt!
    Es wird auf eingehende Verbindungen gewartet!
    Hallo!


    und von nmap:

    Starting Nmap 6.47 ( nmap.org ) at 2016-08-02 17:12 UTC
    Nmap scan report for 192.168.0.11
    Host is up (0.00048s latency).
    PORT STATE SERVICE
    4000/tcp closed remoteanything





    und hier abschließend der Code:

    C-Quellcode

    1. #include <sys/socket.h>
    2. #include <netinet/in.h>
    3. #include <netdb.h>
    4. #include <arpa/inet.h>
    5. #include <iostream>
    6. #include <stdio.h>
    7. #include <errno.h>
    8. int main(){
    9. std::cout << "Server wird gestartet.... " << std::endl;
    10. std::cout << "Socket wird erstellt..." << std::endl;
    11. int sock = socket(AF_INET, SOCK_STREAM, 0), sock2;
    12. if(sock < 0){
    13. printf("%s\n", strerror(errno));
    14. return 1;
    15. }else{
    16. std::cout << "Socket wurde erfolgreich erstellt!" << std::endl;
    17. }
    18. std::cout << "Eine Adresse wird erstellt ..." << std::endl;
    19. struct sockaddr_in server;
    20. memset( &server, 0 ,sizeof(server));
    21. server.sin_family = AF_INET;
    22. server.sin_addr.s_addr = htonl(INADDR_ANY);
    23. server.sin_port = htonl(4000);
    24. if(bind( sock, (struct sockaddr*)&server, sizeof( server)) < 0){
    25. printf("%s", strerror(errno));
    26. }else{
    27. std::cout << "Eine Adresse wurde erfolgreich hergestellt!" << std::endl;
    28. }
    29. std::cout << "Warteschlange wird erstellt..." << std::endl;
    30. if( listen( sock, 40) == -1){
    31. printf("%s", strerror(errno));
    32. return 1;
    33. }else{
    34. std::cout << "Es wurde eine Warteschlange erstellt!" << std::endl;
    35. }
    36. socklen_t len;
    37. std::cout << " Es wird auf eingehende Verbindungen gewartet!" << std::endl;
    38. for(; ; ){
    39. std::cout << "Hallo!" << std::endl;
    40. len = sizeof(server);
    41. sock2 = accept(sock, (struct sockaddr*)&server, &len);
    42. if(sock2 < 0){
    43. std::cout << strerror(sock2) << std::endl;
    44. return 1;
    45. }
    46. std::cout << "Funktioniert!" << std::endl;
    47. }
    48. return 0;
    49. }




    ich habe den fehler gefunden ;)

    bei der Portbelegung muss es so lauten:

    C-Quellcode

    1. server.sin_port = htons(4000);


    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ctextrem“ ()