echoslider
01.06.2009, 18:11
hi. ich habe einen code für nen irc clienten(c++) gefunden. und ich kann bei quakenet nicht senden weil ken PONG gesendet wird. wie und wo kann ich das einbauen?
#include <windows.h>
#include <iostream>
#include <string.h>
#include <winsock.h>
#include <process.h>
#pragma comment(lib, "ws2_32.lib")
void Zugangsdaten(std::string *zugangsdaten)
{
zugangsdaten[0] = "trans3";
zugangsdaten[1] = "irc.quakenet.org";
zugangsdaten[2] = "#victim";
}
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]);
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 user = "USER ";
user += zugangsdaten[0];
user += ' ';
user += "localhost";
user += ' ';
user += zugangsdaten[1];
user += ' ';
user += zugangsdaten[0];
user += "\r\n";
std::string nick = "NICK ";
nick += zugangsdaten[0];
nick += "\r\n";
send(sock, nick.c_str(), nick.length(), 0);
send(sock, user.c_str(), user.length(), 0);
//strtok(dein_Satz,dein_Trenner);
char temp[10000];
int x = recv(sock, temp, 10000, 0);
temp[x] = 0;
//std::string id = strtok(temp,"PING :");
std::cout<< temp;
}
void InRaumGehen(SOCKET sock, std::string *zugangsdaten)
{
std::string join = "JOIN ";
join += zugangsdaten[2];
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()
{
SOCKET sock;
std::string zugangsdaten[3];
Zugangsdaten(zugangsdaten);
sock = VerbindenAnServer(zugangsdaten[1], 6667);
AnmeldenAnServer(sock, zugangsdaten);
InRaumGehen(sock, zugangsdaten);
_beginthread(NachrichtenEmpfangen, 0, (void *)sock);
NachrichtenSenden(sock);
std::cin.get();
WSACleanup();
return 0;
}
#include <windows.h>
#include <iostream>
#include <string.h>
#include <winsock.h>
#include <process.h>
#pragma comment(lib, "ws2_32.lib")
void Zugangsdaten(std::string *zugangsdaten)
{
zugangsdaten[0] = "trans3";
zugangsdaten[1] = "irc.quakenet.org";
zugangsdaten[2] = "#victim";
}
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]);
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 user = "USER ";
user += zugangsdaten[0];
user += ' ';
user += "localhost";
user += ' ';
user += zugangsdaten[1];
user += ' ';
user += zugangsdaten[0];
user += "\r\n";
std::string nick = "NICK ";
nick += zugangsdaten[0];
nick += "\r\n";
send(sock, nick.c_str(), nick.length(), 0);
send(sock, user.c_str(), user.length(), 0);
//strtok(dein_Satz,dein_Trenner);
char temp[10000];
int x = recv(sock, temp, 10000, 0);
temp[x] = 0;
//std::string id = strtok(temp,"PING :");
std::cout<< temp;
}
void InRaumGehen(SOCKET sock, std::string *zugangsdaten)
{
std::string join = "JOIN ";
join += zugangsdaten[2];
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()
{
SOCKET sock;
std::string zugangsdaten[3];
Zugangsdaten(zugangsdaten);
sock = VerbindenAnServer(zugangsdaten[1], 6667);
AnmeldenAnServer(sock, zugangsdaten);
InRaumGehen(sock, zugangsdaten);
_beginthread(NachrichtenEmpfangen, 0, (void *)sock);
NachrichtenSenden(sock);
std::cin.get();
WSACleanup();
return 0;
}