anoniem Geplaatst: 27 augustus 2002 Delen Geplaatst: 27 augustus 2002 Hoi, Ik ben bezig om voor iemand een MSNBot te maken, dat gaat goed als ik het eerste request stuur, en daar krijg ik ook antwoord op, maar mijn tweede request blijft hoe dan ook onbeantwoord Ik gebruiken onder unix c++ met low-level io calls Dit is mijn code [code:1:6a31ac5eb0] #include "msnbot.h" /*MSNBot::MSNBot() { } MSNBot::~MSNBot() { }*/ void MSNBot::mkconn() { int len; int result; fd = socket(AF_INET, SOCK_STREAM, 0); hostaddr = gethostbyname(HOST); if(!hostaddr){ cout << "No route to host!!!"; exit(1); } address.sin_family = AF_INET; //address.sin_addr = *(struct in_addr *)hostaddr -> h_addr_list; address.sin_addr.s_addr = inet_addr(HOST); address.sin_port = htons(PORT); len = sizeof(address); result = connect( fd, (struct sockaddr *)&address, len); if(result == -1){ perror("oops: msnbot"); exit(1); } msnwrite("VER 0 MSNP2"); char buffer4[2048]; msnread((char *)&buffer4, 2048);; char buffer2[2048]; msnwrite("INF 1"); msnread((char *)&buffer2, 2048); char buffer3[2048]; msnwrite("USR 2 MD5 I ", true); msnwrite(USER); len = msnread((char *)&buffer3, 2048); buffer3; struct splitarray mysplit; mysplit = split(buffer3, ' ', len); MD5 context; char *array2 = new char(); array2 = mysplit.array[4]; array2 = strcat(array2, " " PASSWD); context.update((unsigned char *)&mysplit.array[4], strlen((unsigned char *)&mysplit.array[4]) ); context.finalize(); char buffer[2048]; msnwrite("USR 3 MD5 S ", true); msnwrite(context.hex_digest() ); if (wait(0) == true){ len = msnread((char *)&buffer, 2048); } close(fd); } int MSNBot::msnwrite(char *buffer, bool raw) { int len =0; len = write(fd, buffer, strlen(buffer)); if(len == -1) return -1; if(!raw) len =+ write(fd, " \r\n", 4); cout << "Sent: " << buffer; if(!raw) cout << " -CRLF"; cout << " " << endl; return len; } int MSNBot::msnread(char *buffer, int length) { int len; len = read(fd, buffer, length); buffer[len +1] = '\0'; cout << "Received: " << buffer << endl; return len; } struct splitarray MSNBot::split(char string[1024], char sep, int len) { int i; int e=0; int n; struct splitarray retval; char array[1024][1024]; cout << array[1]; // cout << "boe"; for(i = 0; i < len; i++){ if(string[i] == sep){ e++; n = 0; } else{ array[e][n] = string[i]; n++; } } retval.count = e; retval.array = array; return retval; } bool MSNBot::wait(int timeout) // Wait for the filediscriptor to become ready { fd_set waitfd; FD_ZERO(&waitfd); FD_SET(fd, &waitfd); int result; struct timeval waittimeout; waittimeout.tv_sec = 0; waittimeout.tv_usec = timeout * 1000; result = select(FD_SETSIZE, &waitfd, NULL, NULL, &waittimeout); switch(result){ case 0: // timeout return false; case -1: // error cerr << "Plib::pStream::wait::Select error!\n"; return false; default: // fd ready return true; } return false; [/code:1:6a31ac5eb0] Dit is de output: [quote=bash] Sent: VER 0 MSNP2 -CRLF Received: VER 0 MSNP2 Sent: INF 1 -CRLF Received: Sent: USR 2 MD5 I Sent: Robbert_van_den_Berg@hotmail.com -CRLF Received: Sent: USR 3 MD5 S Sent: 752b34f7a0474ed17a1a7065a9174883 -CRLF Received: [/quote] Help! Barry Quote Link naar reactie
anoniem Geplaatst: 18 februari 2003 Auteur Delen Geplaatst: 18 februari 2003 uhm waarom moeilijk doen als het makkelijk kan? er is een speciale site waar je een botje kan downloaden en bewerken zo maak je je eigen bot met tekst zonder moeilijke scripts of codes enige is downloaden en installeren. kijk eens op [url]http://botje.tnhteam.com[/url] Quote Link naar reactie
anoniem Geplaatst: 18 februari 2003 Auteur Delen Geplaatst: 18 februari 2003 :roll: dit is een wel errug oude thread heh! Het probleem is allang opgelost. En btw, ik houd van moeilijk doen :D Quote Link naar reactie
anoniem Geplaatst: 22 februari 2003 Auteur Delen Geplaatst: 22 februari 2003 niemand die het had beantwoord wilde alleen maar helpen sorry hoor Quote Link naar reactie
anoniem Geplaatst: 22 februari 2003 Auteur Delen Geplaatst: 22 februari 2003 Oww maakt verder niet uit hoor ;-) Bedankt iig voor je moeite. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen