kostenloser Webspace werbefrei: lima-city


Client-Server-Programmierung: error LNK2019

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    tropa-graciosa

    tropa-graciosa hat kostenlosen Webspace.

    Heyho, ich habe ein Online-Buch gefunden, dass erklärt, wie ich mit C eine Verbindung zu einem Server herstellen kann. Das Problem dabei ist nun aber, dass ich gerne in C++ programmieren würde und immer einen Fehler vom Linker angezeigt bekomme (habe Visual c++ als Programmierumgebung).

    1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_connect@12" in Funktion "_main".
    1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_htons@4" in Funktion "_main".
    1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_inet_addr@4" in Funktion "_main".
    1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_inet_ntoa@4" in Funktion "_main".
    1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_gethostbyname@4" in Funktion "_main".
    1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_socket@12" in Funktion "_main".

    So, nun mal der Quellcode vom Clienten ...

    #include "stdafx.h"
    #include <iostream>
    #include <fstream>
    #include <winsock.h>
    using namespace std;
    
    int main()
    {
    SOCKET sock;
    sock=socket(AF_INET, SOCK_STREAM, 0 );
    int conn;
    struct sockaddr_in server;
    hostent* localHost;
    char* localIP;
    localHost = gethostbyname("localhost");
    localIP = inet_ntoa (*(struct in_addr *)*localHost->h_addr_list);
    server.sin_family = AF_INET;
    server.sin_addr.s_addr = inet_addr(localIP);
    server.sin_port = htons(80);
    if (connect(sock,(struct sockaddr*)&server, sizeof(server)) < 0){
    cout<<"Verbindung konnte nicht hergestellt werden.";
    }
    else{
    conn=connect(sock,(struct sockaddr*)&server, sizeof(server));
    }
    }


    ... und der vom Server, der ähnliche Fehlermeldungen verursacht:

    #include "stdafx.h"
    #include <iostream>
    #include <fstream>
    #include <winsock.h>
    using namespace std;
    
    int main()
    {
    SOCKET sock;
    sock=socket(AF_INET, SOCK_STREAM, 0 );
    struct sockaddr_in server;
    memset( &server, 0, sizeof (server));
    // IPv4-Adresse
    server.sin_family = AF_INET;
    // Jede IP-Adresse ist gültig
    server.sin_addr.s_addr = htonl( INADDR_ANY );
    // Portnummer 1234
    server.sin_port = htons( 1234 );
    if(bind( sock, (struct sockaddr*)&server, sizeof( server)) < 0) {
       //Fehler bei bind()
     }
    }


    Ich finde leider kein C++-Tutorial dazu, nur C. Deshalb meine Frage: Ist der Quellcode auch in C++ noch verwendbar oder macht man das da anders? Oder hab ich einfach nur einen simplen Fehler dadrin, den ich übersehe?

    Falls jemand ein Tutorial zur Netzwerkprogrammierung findet, würde mich über einen Link freuen. Hab nämlich nur ein C++ Buch für Einsteiger gekauft und dort ist das nicht drin, außerdem eins zur 3D-Spieleprogrammierung, nur soll es halt ein Onlinegame werden, wozu mir halt noch der Verbindungsaufbau und das Senden von Daten fehlen ...

    MfG
    Ich ^^
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Der Code ist bereits C++ und nicht C. Allerdings dürfte das keinen so großen Unterschied machen, da C++ abwärtskompatibel zu C ist. Die Socket-Schnittstellen dürften auch primär für C ausgelegt sein, aber es ist kein Problem, sie auch mit C++ zu nutzen.

    Zu deinen Linker Problemen gibt es hier was zu lesen: http://www.zotteljedi.de/socket-tipps/voraus.html

    Und warum willst du lieber C++ statt C programmieren?

    Beitrag zuletzt geändert: 4.9.2010 20:10:54 von bladehunter
  4. Autor dieses Themas

    tropa-graciosa

    tropa-graciosa hat kostenlosen Webspace.

    Wegen der objektorientierten Programmierung ... Und weil C++ (glaub ich) ein wenig schneller ist. Und außerdem wollte ich ein 3D-Spiel programmieren und da gabs nur Bücher mit C++ und DirectX, aber nicht mit C. Außerdem habe ich in der Schule schon ein wenig C++ gelernt.
  5. Ich glaube du siehst das falsch. C++ ist nicht schneller. Und nur weil es in C keine Klassen gibt, heißt es nicht, dass man nicht objektorientiert programmieren kann. Wenn ihr in der Schule C++ gelernt habt, dann müsstest du die Unterschiede (die halt echt kaum vorhanden sind) kennen.
    Aber es gibt auch keinen Grund in C statt C++ zu programmieren.
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!