ERLEDIGT
NEIN
NEIN
ANTWORTEN
1
1
ZUGRIFFE
4298
4298
EMPFEHLEN
-
09.06.06 12:50 #123448241320410 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
ok, ich habe #pragma comment(lib, "ws2_32.lib") nochmal geaddet, immernoch nix,[C++ Fehler] Unit1.cpp(46): E2268 Aufruf der undefinierten Funktion 'sprintf'
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.
-
09.06.06 12:57 #2
- 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
-
Borland C++ Builder
Von riccardo1 im Forum C/C++Antworten: 7Letzter Beitrag: 02.05.08, 19:57 -
Borland C++ Builder?
Von Sinac im Forum C/C++Antworten: 9Letzter Beitrag: 12.12.06, 16:11 -
Diagramme bei Borland C++ Builder?
Von Mstricha im Forum Borland CBuilder und VCLAntworten: 2Letzter Beitrag: 30.03.05, 15:10 -
Diagramm in Borland C++ Builder 6
Von twtimew im Forum C/C++Antworten: 5Letzter Beitrag: 09.02.05, 15:04 -
Borland c++ Builder
Von js-mueller im Forum C/C++Antworten: 11Letzter Beitrag: 11.09.03, 12:57





Zitieren
Login






