2
23448241320410
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
gleicher fehler.
naja, wo liegt der fehler?
hier das tutorial:
http://www.tutorials.de/forum/c-c-c...-hilfe-von-windows-sockets-programmieren.html
und hier der source, den ich benutze:
vielen dank.
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...-hilfe-von-windows-sockets-programmieren.html
und hier der source, den ich benutze:
Code:
//---------------------------------------------------------------------------
#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.