tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
18
ZUGRIFFE
9251
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Silvercreast Silvercreast ist offline Mitglied Gold
    Registriert seit
    Aug 2005
    Ort
    Solingen ( NRW )
    Beiträge
    152
    Hallo

    mein Problem bezieht sich auf die Socket Programmierung und zwar habe ich für den Client folgenden Code geschrieben:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    
        SOCKET MySocket;
        char serverip[20];
        sockaddr_in addr;
        WSADATA wsaData;
     
        if (WSAStartup(MAKEWORD(2,0),&wsaData) != 0)
        {
            MessageBox(0,"WSA konnte nicht initialisiert werden","Fehler",MB_OK);
            return false;
        }
     
        hostent* dns = gethostbyname("FuhrparkServer");
        sprintf(serverip, "%u.%u.%u.%u",(unsigned char) dns->h_addr_list[0][0],
            (unsigned char) dns->h_addr_list[0][1], (unsigned char) dns->h_addr_list[0][2], 
            (unsigned char) dns->h_addr_list[0][3]);
     
        addr.sin_family = AF_INET;
        addr.sin_port = htons(110);
        addr.sin_addr.s_addr = inet_addr(serverip);
     
        MySocket = socket( AF_INET, SOCK_STREAM,0);
     
        if(MySocket == 0)
        {
            MessageBox(0,"Socket konnte nicht initalisiert werden","Fehler",MB_OK);
                return false;
        }
     
        if(connect(MySocket, (sockaddr *) &addr, sizeof(addr)) == -1)
        {
            MessageBox(0,"Es konnte keine Verbindung aufgebaut werden","Fehler",MB_OK);
            return false;
        }
     
        return true;
     
     
     
    }

    Den Code habe ich von hier aus einem anderen Thread. Habe dann von einer Internetseite die mir hier auch empfohlen wird einen Server Code erstellt:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    
    SOCKET MySocket;
        char serverip[20];
        sockaddr_in addr;
        sockaddr_in remote_addr;
        WSADATA wsaData;
        int size;
        int remote_sock;
     
        if (WSAStartup(MAKEWORD(2,0),&wsaData) != 0)
        {
            MessageBox(0,"WSA konnte nicht initialisiert werden","Fehler",MB_OK);
            return false;
        }
     
        addr.sin_family = AF_INET;
        addr.sin_port = htons(110);
        addr.sin_addr.s_addr = INADDR_ANY;
     
        MySocket = socket( AF_INET, SOCK_STREAM,0);
     
        if(bind(MySocket, (sockaddr* ) &addr, sizeof(addr)) == -1)
        {
            MessageBox(0,"Socket konnte nicht initalisiert werden","Fehler",MB_OK);
                return false;
        }
     
        if(listen(MySocket,1) == -1)
        {
            MessageBox(0,"Es konnte keine Verbindung aufgebaut werden","Fehler",MB_OK);
            return false;
        }
     
        fflush(stdout);
     
        size = sizeof(remote_addr); 
        remote_sock = accept(MySocket,(sockaddr* ) &remote_addr, &size);
        fflush(stdout);
     
        if(remote_sock < 0)
        {
            _close(MySocket);
            MessageBox(0,"Socket geschlossen","Hinweis",MB_OK);
            return false;
        }
     
     
        fflush(stdout);
     
        size = send (remote_sock,"Wilkommen",11,0);
        
        if(size == -1)
        {
            MessageBox(0,"Fehler","Fehler",MB_OK);
        }
        else
        {
            MessageBox(0,"Gesendet","Hinweis",MB_OK);
        }
        
     
        _close(remote_sock);
        _close(MySocket);
        fflush(stdout);
     
        return true;
     
     
     
    }

    Wie ich aber erkennen musste funktiniert gar nichts. Der Compiler hift mir nicht mehr der sagt alles ok, ich weiss net was ich falsch mache . Hab ich irgendwelche Bugs im Code oder wieso funktioniert das alles nicht.
    Ich dachte das sich der Client verbindet und der Server ein Wilkommen zurück schickt aber nichts geht

    Ich brauche dringend Hilfe

    Gruß Silver
     
    Code :
    1
    
    [COLOR=Blue][B]Wer [/B][I]Wie[/I] [B]Was[/B] [I]Wieso [/I][B]Weshalb[/B] [I]Warum [/I][B]Wer nicht fragt bleibt dumm [/B][/COLOR]

  2. #2
    Avatar von TwoFaze
    TwoFaze TwoFaze ist offline Mitglied Gold
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe (BW)
    Beiträge
    162
    Wie siehts den mit dieser Zeile aus
    Code :
    1
    
    hostent* dns = gethostbyname("FuhrparkServer");

    Ist das dein Host?
     

  3. #3
    Silvercreast Silvercreast ist offline Mitglied Gold
    Registriert seit
    Aug 2005
    Ort
    Solingen ( NRW )
    Beiträge
    152
    So heist mein Server , muss da nicht der Name meines Servers rein
     
    Code :
    1
    
    [COLOR=Blue][B]Wer [/B][I]Wie[/I] [B]Was[/B] [I]Wieso [/I][B]Weshalb[/B] [I]Warum [/I][B]Wer nicht fragt bleibt dumm [/B][/COLOR]

  4. #4
    Avatar von TwoFaze
    TwoFaze TwoFaze ist offline Mitglied Gold
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe (BW)
    Beiträge
    162
    Probiers doch mal mit "localhost" !
    Dein Programmname vom Server hat hier eigentlich nichts zu suchen!
     

  5. #5
    Silvercreast Silvercreast ist offline Mitglied Gold
    Registriert seit
    Aug 2005
    Ort
    Solingen ( NRW )
    Beiträge
    152
    achso ich dachte da müsste ich meinen Server eintragen.
    Ok danke jetzt sagt er mir zumindestens das keine Verbindung aufgebaut werden kann.
    Kannst du mir eventuell noch helfen wie ich den Code verändern muss, damit ich ne Verbindung kriege
     
    Code :
    1
    
    [COLOR=Blue][B]Wer [/B][I]Wie[/I] [B]Was[/B] [I]Wieso [/I][B]Weshalb[/B] [I]Warum [/I][B]Wer nicht fragt bleibt dumm [/B][/COLOR]

  6. #6
    Avatar von TwoFaze
    TwoFaze TwoFaze ist offline Mitglied Gold
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe (BW)
    Beiträge
    162
    Das einzige was ich sehen kann (ich vermute du startest den Client vor dem Server ) ist die Stelle
    Code :
    1
    
    addr.sin_addr.s_addr = INADDR_ANY;
    Versuche mal das INADDR_ANY durch ADDR_ANY zu ersetzen?
    Code :
    1
    
    addr.sin_addr.s_addr = ADDR_ANY;
    gruß!

    edit: Wobei, dass ist Quatsch, sonst würde dein Server ja garnicht kompilieren, sorry!!
    Wäre vielleicht doch hilfreich, wenn du genauere Fehlermeldungen deines Clients/Servers schreiben würdest!
    Geändert von TwoFaze (28.11.05 um 15:47 Uhr)
     

  7. #7
    Registriert seit
    Oct 2003
    Beiträge
    1.706
    Zitat Zitat von Silvercreast
    achso ich dachte da müsste ich meinen Server eintragen.
    Ok danke jetzt sagt er mir zumindestens das keine Verbindung aufgebaut werden kann.
    Kannst du mir eventuell noch helfen wie ich den Code verändern muss, damit ich ne Verbindung kriege
    Hallo,

    hast du deinen Server auch vorher am localhost:110 gestartet?

    Gruß

    RedWing
     
    "I'm not deaf, I'm ignoring you"
    ----

  8. #8
    Silvercreast Silvercreast ist offline Mitglied Gold
    Registriert seit
    Aug 2005
    Ort
    Solingen ( NRW )
    Beiträge
    152
    @ TwoFaze mein Server und mein Client geben keine Fehlermeldung raus

    @ RedWing ich habe meinem Server nur den Port 110 gegeben, wie im Code
     
    Code :
    1
    
    [COLOR=Blue][B]Wer [/B][I]Wie[/I] [B]Was[/B] [I]Wieso [/I][B]Weshalb[/B] [I]Warum [/I][B]Wer nicht fragt bleibt dumm [/B][/COLOR]

  9. #9
    Registriert seit
    Oct 2003
    Beiträge
    1.706
    Zitat Zitat von Silvercreast
    @ TwoFaze mein Server und mein Client geben keine Fehlermeldung raus

    @ RedWing ich habe meinem Server nur den Port 110 gegeben, wie im Code
    ja hast du ihn auch gestartet?Das war meine Frage nur um sicher zu gehen
    das der Fehler auch wirklich im Code liegt

    Gruß

    RedWing
     
    "I'm not deaf, I'm ignoring you"
    ----

  10. #10
    Silvercreast Silvercreast ist offline Mitglied Gold
    Registriert seit
    Aug 2005
    Ort
    Solingen ( NRW )
    Beiträge
    152
    Ja Ja ich habe den Server gestartet und dann den Client
     
    Code :
    1
    
    [COLOR=Blue][B]Wer [/B][I]Wie[/I] [B]Was[/B] [I]Wieso [/I][B]Weshalb[/B] [I]Warum [/I][B]Wer nicht fragt bleibt dumm [/B][/COLOR]

  11. #11
    Registriert seit
    Oct 2003
    Beiträge
    1.706
    Und wie schauts aus, kommt der Server auch ohne Fehlermeldungen
    bis zum accept? Eventuell ist der Port 110 bzw Socket auch schon durch
    einen anderen Dienst belegt, dann sollte eigentlich ein Fehler
    beim bind() entstehen...

    Gruß

    RedWing
     
    "I'm not deaf, I'm ignoring you"
    ----

  12. #12
    Silvercreast Silvercreast ist offline Mitglied Gold
    Registriert seit
    Aug 2005
    Ort
    Solingen ( NRW )
    Beiträge
    152
    Wie kann ich das den Kontrollieren? Ich kann per Debug nicht das accept überprüfen.
     
    Code :
    1
    
    [COLOR=Blue][B]Wer [/B][I]Wie[/I] [B]Was[/B] [I]Wieso [/I][B]Weshalb[/B] [I]Warum [/I][B]Wer nicht fragt bleibt dumm [/B][/COLOR]

  13. #13
    Avatar von TwoFaze
    TwoFaze TwoFaze ist offline Mitglied Gold
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe (BW)
    Beiträge
    162
    Soweit ich das deinem Server oben entnehmen kann, macht er Fehlerausgaben bei "bind" und "connect", da sollte dann eigentlich was stehen!
    Wenn du dich wirklich für den Fehler interessierst, dann spiel ein bischen mit deiner Anwendung rum und experimentiere. Vielleicht könntest du auch, um ein lauffähiges Beispiel zu bekommen und auch ein bischen Hilfestellung zu haben bei
    www.c-worker.ch
    vorbeischauen, da ist eigentlich auch alles für den Einstieg schritt-für-schritt erklärt.
    Kannst ja dann auch hier berichten an was es lag..

    PS.: Bin auch Azubi Fachinformatiker AE
     

  14. #14
    Silvercreast Silvercreast ist offline Mitglied Gold
    Registriert seit
    Aug 2005
    Ort
    Solingen ( NRW )
    Beiträge
    152
    Natürlich interessiert es mich voran das liegt, ich bin momentan auch nen bischen Ratlos were mich mal durch die Seiten durchackern
     
    Code :
    1
    
    [COLOR=Blue][B]Wer [/B][I]Wie[/I] [B]Was[/B] [I]Wieso [/I][B]Weshalb[/B] [I]Warum [/I][B]Wer nicht fragt bleibt dumm [/B][/COLOR]

  15. #15
    Registriert seit
    Oct 2003
    Beiträge
    1.706
    Hallo versuchs mal bitte so bei deinem Client:
    anstatt:
    Code :
    1
    
    addr.sin_addr.s_addr = inet_addr(serverip);
    so:
    Code :
    1
    
    addr.sin_addr.s_addr = inet_addr("127.0.0.1");

    Ich vermute das die ip bei deinem Bsp nicht richtig extrahiert wird...

    Gruß

    RedWing
     
    "I'm not deaf, I'm ignoring you"
    ----

Ähnliche Themen

  1. Socket Programmierung
    Von Maxii im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 13.05.09, 12:57
  2. Socket Programmierung
    Von thomasbe im Forum Java
    Antworten: 4
    Letzter Beitrag: 20.07.08, 18:02
  3. Socket Programmierung mit C++
    Von Shooter07 im Forum Borland CBuilder und VCL
    Antworten: 2
    Letzter Beitrag: 24.04.08, 14:49
  4. Socket Programmierung
    Von marie20 im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 27.04.05, 10:46
  5. Socket-Programmierung
    Von lindin im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 06.09.04, 14:54