tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
4298
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    23448241320410 Tutorials.de Gastzugang
    ich habe keine ahnung, ob das nun hier reinpasst oder nicht,
    oder ob man das direk zum tutorial schreiben muss, aber hier mal die frage:
    ich habe vor, mich etwas mit AI lá ELiza zu beschäftigen, und wollte das ding chat fähig machen.
    OK, da traf es sich gut, das ich hier gleich einen fertigen IRC clienten endeckt habe, den ich für meine zwecke doch hoffentlich erweitern kann.
    soweit so gut, ich verstand im grund alles außer das SOCKET-zeug.
    also, einfahc mal den quelltext rübergezogen, und leicht an den Borland C++ builder angepasst.
    ich habe die ws2_32.lib über "Project hinzufügen" geaddet (aus dem lib ordner des Borland c++ builders)
    und #pragma comment(lib, "ws2_32.lib") entfernt.
    ok, als ich dne spaß dann compilen wollte, kam folgende fehrermeldung
    [C++ Fehler] Unit1.cpp(46): E2268 Aufruf der undefinierten Funktion 'sprintf'
    ok, ich habe #pragma comment(lib, "ws2_32.lib") nochmal geaddet, immernoch nix,
    gleicher fehler.
    naja, wo liegt der fehler?
    hier das tutorial:
    http://www.tutorials.de/forum/c-c-c-...rammieren.html

    und hier der source, den ich benutze:
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
    #include <windows.h>
    #include <iostream>
    #include <string.h>
    #include <winsock.h>
    #include <process.h>
    #pragma argsused
     
     
     
    void Zugangsdaten(std::string *zugangsdaten)
    {
        char temp[30];
     
        std::cout<< "Nick: ";
        std::cin.getline(temp, 30, '\n');
        zugangsdaten[0] = temp;
        std::cout<< "Name: ";
        std::cin.getline(temp, 30, '\n');
        zugangsdaten[1] = temp;
        std::cout<< "Server: ";
        std::cin.getline(temp, 30, '\n');
        zugangsdaten[2] = temp;
        std::cout<< "Raum: ";
        std::cin.getline(temp, 30, '\n');
        zugangsdaten[3] = temp;
    }
     
    unsigned int VerbindenAnServer(std::string server, int port)
    {
        SOCKET sock;
        char serverip[20];
        sockaddr_in addr;
        WSADATA wsaData;
        
        if(WSAStartup(MAKEWORD(2,0), &wsaData) != 0)
            std::cout<<"WSA konnte nicht initialisiert werden.";
     
        hostent *dns = gethostbyname(server.c_str());
     
        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]);  //hier tritt der Fehler auf
     
        addr.sin_family = AF_INET;
        addr.sin_port = htons(port);
        addr.sin_addr.s_addr = inet_addr(serverip);
     
        sock = socket(AF_INET, SOCK_STREAM, 0);
        if(sock == 0)
            std::cout<<"Socket konnte nicht initialisiert werden";
     
        if(connect(sock, (sockaddr *) &addr, sizeof(addr)) == -1)
            std::cout<<"Verbindung konnte nicht hergestellt werden";
        
        char temp[10000];
        int x = recv(sock, temp, 10000, 0);
        temp[x] = 0;
        std::cout<< temp;
     
        return sock;
    }
     
    void AnmeldenAnServer(SOCKET sock, std::string *zugangsdaten)
    {
        std::string nick = "NICK ";
        std::string user = "USER ";
     
        nick += zugangsdaten[0];
        nick += "\r\n";
     
        user += zugangsdaten[0];
        user += ' ';
        user += "localhost ";
        user += zugangsdaten[2];
        user += ' ';
        user += zugangsdaten[1];
        user += "\r\n";
     
        send(sock, nick.c_str(), nick.length(), 0);
        send(sock, user.c_str(), user.length(), 0);
     
        char temp[10000];
        int x = recv(sock, temp, 10000, 0);
        temp[x] = 0;
        std::cout<< temp;
    }
     
    void InRaumGehen(SOCKET sock, std::string *zugangsdaten)
    {
        std::string join = "JOIN ";
     
        join += zugangsdaten[3];
        join += "\r\n";
     
        send(sock, join.c_str(), join.length(), 0);
     
        char temp[10000];
        int x = recv(sock, temp, 10000, 0);
        temp[x] = 0;
        std::cout<< temp;
    }
     
    void NachrichtenEmpfangen(void *sock)
    {
        char ausgabe[1000];
        int x = 0;
     
        while(1)
        {
            x = recv((SOCKET)sock, ausgabe, 1000, 0);
            
            if(x > 0)
            {
                ausgabe[x] = 0;
                std::cout<< ausgabe << std::endl;
            }
            Sleep(10);
        }
    }
     
    void NachrichtenSenden(SOCKET sock)
    {
        char temp[1000];
        std::string eingabe;
     
        while(1)
        {
            std::cin.getline(temp, 100, '\n');
            eingabe = temp;
            eingabe += "\r\n";
     
            send(sock, eingabe.c_str(), eingabe.length(), 0);
        }
    }
     
     
    //---------------------------------------------------------------------------
     
     
    int main(int argc, char* argv[])
    {
        SOCKET sock;
        std::string zugangsdaten[4];
     
        Zugangsdaten(zugangsdaten);
        sock = VerbindenAnServer(zugangsdaten[2], 6667);
        AnmeldenAnServer(sock, zugangsdaten);
        InRaumGehen(sock, zugangsdaten);
        _beginthread(NachrichtenEmpfangen, 0, (void *)sock);
        NachrichtenSenden(sock);
     
        std::cin.get();
        WSACleanup();
        return 0;
    }
    //---------------------------------------------------------------------------

    vielen dank.
     

  2. #2
    deepthroat deepthroat ist gerade online Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Die Fehlermeldung die du bekommst stammt vom Compiler, der dir sagt das er die Funktion nicht kennt. Das kann nichts mit irgendwelchen Bibliotheken zu tun haben weil diese erst beim Linken (vom Linker) hinzugezogen werden.

    Was dir fehlt ist eine Header Datei wo die sprintf Funktion deklariert ist. Die Funktion sprintf ist eine Standardfunktion der C Bibliothek und als solche im Header <stdio.h> bzw. für C++ in <cstdio> deklariert.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Borland C++ Builder
    Von riccardo1 im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 02.05.08, 19:57
  2. Borland C++ Builder?
    Von Sinac im Forum C/C++
    Antworten: 9
    Letzter Beitrag: 12.12.06, 16:11
  3. Diagramme bei Borland C++ Builder?
    Von Mstricha im Forum Borland CBuilder und VCL
    Antworten: 2
    Letzter Beitrag: 30.03.05, 15:10
  4. Diagramm in Borland C++ Builder 6
    Von twtimew im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 09.02.05, 15:04
  5. Borland c++ Builder
    Von js-mueller im Forum C/C++
    Antworten: 11
    Letzter Beitrag: 11.09.03, 12:57