Niet alles waardes werken
Hallo,
Ik ben samen met nog iemand IRC Services aan het programmeren. Dit liep lekker, tot dat we het idee kregen om de protocollen in een DLL te stoppen. Naar wat stoeien hebben we het voor elkaar gekregen. Echter bleven we met het volgende probleem zitten:
Als hij de DLL laad, heeft hij gegevens nodig. Dit gaat om een wachtwoord, targetserver etc.
Op een of andere manier laat hij alleen de TargetServer goed zien.
de DLL code:
De BaseSocket waarin we de protocol aanroepen:
Verder hebben we gegeken of hij de gegevens wel juist inleest. Dit hebben we door een cout gedaan. Dit geeft hij wel goed aan als je het in het normale C++ file doet, maar niet in de DLL file. Het enige wat hij daar goed in weergeeft in de ThisServer.
Weet iemand hier een oplossing voor.
Indien iemand meer informatie wilt hebben, of meer van het systeem wilt zien, mijn gelieve een PM te sturen
Alvast bedankt,
Hallo,
Ik ben samen met nog iemand IRC Services aan het programmeren. Dit liep lekker, tot dat we het idee kregen om de protocollen in een DLL te stoppen. Naar wat stoeien hebben we het voor elkaar gekregen. Echter bleven we met het volgende probleem zitten:
Als hij de DLL laad, heeft hij gegevens nodig. Dit gaat om een wachtwoord, targetserver etc.
Op een of andere manier laat hij alleen de TargetServer goed zien.
de DLL code:
Code:
// unreal32.cpp : Defines the entry point for the console application.
//
#include "besit.h"
#include "ircd.h"
class Unreal32 : public IRCd
{
public:
Unreal32::Unreal32( LinkInfo * li ) : IRCd( li )
{
bStatus = true;
if( !Status() )
return;
//our socket is initzialized, connect to our IRC server and setup a connection.
string Buf = Recv();
Send( "PASS :%s", Link->LinkPassword);
Send( "PROTOCTL NICKv2 VHP UMODE2 NICKIP SJ3 NOQUIT TKLEXT" );
Send( "SERVER %s 1 :U2309-WO-%i", Link->ThisServer, Link->ServerNumeric );
Send( "NETINFO 2 %i 2309 * 0 0 0 :%s",(int)time( NULL ), Link->ServerDiscription );
Send( "EOS" );
//skip all the user online blabla for now.
Buf = Recv();
while( Buf.find( "EOS", 0 ) == string::npos )
Buf = Recv();
bStatus = true;
}
virtual void Connect()
{
}
};
class Unreal32Factory : IRCdFactory
{
public:
Unreal32Factory() {}
~Unreal32Factory() {}
virtual IRCd * LoadIRCd(LinkInfo * li)
{
return new Unreal32( li );
}
};
extern "C" DllExport void * init_protocol( void )
{
return new Unreal32Factory();
}
De BaseSocket waarin we de protocol aanroepen:
Code:
#include "Besit.h"
#include "BaseSocket.h"
BaseSocket::BaseSocket( string IP, int Port)
{
bIsActive = false;
sockaddr_in sinData;
sinData.sin_family = AF_INET;
sinData.sin_addr.s_addr = inet_addr( IP.c_str() );
sinData.sin_port = htons( Port );
Sock = socket( AF_INET, SOCK_STREAM, 0);
if( connect( Sock, (LPSOCKADDR) &sinData, sizeof sinData ) != SOCKET_ERROR )
{
bIsActive = true;
cout << "Connected to: " << IP << ':' << Port << endl;
}else
cerr << "Error connecting to server: " << WSAGetLastError() << endl;
}
BaseSocket::~BaseSocket()
{
bIsActive = false;
closesocket( Sock );
}
int BaseSocket::Send(string Data)
{
cout << Data;
return send( Sock, Data.c_str(), (int)Data.size(), 0 );
}
string BaseSocket::Recv()
{
// init vars
char * Buf = new char[512];
string Data;
int RecvSize;
RecvSize = recv( Sock, Buf, 512, 0);
if( RecvSize > 0 )
{
Data = Buf;
Data.resize( RecvSize );
}else{
bIsActive = false;
Data = "NULL";
}
//clean up our mess
delete [] Buf;
cout << Data;
return Data;
}
Verder hebben we gegeken of hij de gegevens wel juist inleest. Dit hebben we door een cout gedaan. Dit geeft hij wel goed aan als je het in het normale C++ file doet, maar niet in de DLL file. Het enige wat hij daar goed in weergeeft in de ThisServer.
Weet iemand hier een oplossing voor.
Indien iemand meer informatie wilt hebben, of meer van het systeem wilt zien, mijn gelieve een PM te sturen
Alvast bedankt,
Laatst bewerkt: