Braccop
22-12-2005, 18:50
sto diventando scemo... non so piu' dove sbattere la testa, non capisco assolutamente PERCHE questo codice non funzioni, o meglio...
...
LPHOSTENT hostEntry,proxyEntry;
hostEntry = gethostbyname("nomehost.quello.che.voglio");
char proxycmd[10];
proxycmd[0]=4; //socks 4
proxycmd[1]=1; //connect req
if (port <=255){
proxycmd[2]=0;
proxycmd[3]=port;
}
else{
proxycmd[2]=port/256;
proxycmd[3]=port - (proxycmd[2]*256);
}
proxycmd[4]=(unsigned char)hostEntry->h_addr_list[0][0];
proxycmd[5]=(unsigned char)hostEntry->h_addr_list[0][1];
proxycmd[6]=(unsigned char)hostEntry->h_addr_list[0][2];
proxycmd[7]=(unsigned char)hostEntry->h_addr_list[0][3];
...
ok a questo punto io mi aspetto di trovarmi l'indirizzo ip nei byte che vanno da 4 a 7 di proxycmd...
il problema e' che l'ultimo dannatissimo byte mi torna sempre un valore assurdo, ben superiore al 255 max del char il che non capisco come sia possibile visto che in un char NON puo' starci piu di 255 :|
MA non finisce qui... il bello e' che se io provo a fare una cosa cosi'
memcpy(&proxycmd[7],&hostEntry->h_addr_list[0][3],1);
proxycmd[7]=148;
il mio assegnamento proxycmd[7]=148; e' come se non fosse stato mai fatto! mantiene ancora l'assurdo valore di prima, che e' qualcosa attorno a 65438 se lo casto a unsigned short int (per stamparlo via cout), per non parlare se lo casto a long int...
sinceramente non so piu' cosa fare... non riesco a capacitarmi poi di come un char mi sputi fuori valori che escono dal suo seminato
pls help :cry:
...
LPHOSTENT hostEntry,proxyEntry;
hostEntry = gethostbyname("nomehost.quello.che.voglio");
char proxycmd[10];
proxycmd[0]=4; //socks 4
proxycmd[1]=1; //connect req
if (port <=255){
proxycmd[2]=0;
proxycmd[3]=port;
}
else{
proxycmd[2]=port/256;
proxycmd[3]=port - (proxycmd[2]*256);
}
proxycmd[4]=(unsigned char)hostEntry->h_addr_list[0][0];
proxycmd[5]=(unsigned char)hostEntry->h_addr_list[0][1];
proxycmd[6]=(unsigned char)hostEntry->h_addr_list[0][2];
proxycmd[7]=(unsigned char)hostEntry->h_addr_list[0][3];
...
ok a questo punto io mi aspetto di trovarmi l'indirizzo ip nei byte che vanno da 4 a 7 di proxycmd...
il problema e' che l'ultimo dannatissimo byte mi torna sempre un valore assurdo, ben superiore al 255 max del char il che non capisco come sia possibile visto che in un char NON puo' starci piu di 255 :|
MA non finisce qui... il bello e' che se io provo a fare una cosa cosi'
memcpy(&proxycmd[7],&hostEntry->h_addr_list[0][3],1);
proxycmd[7]=148;
il mio assegnamento proxycmd[7]=148; e' come se non fosse stato mai fatto! mantiene ancora l'assurdo valore di prima, che e' qualcosa attorno a 65438 se lo casto a unsigned short int (per stamparlo via cout), per non parlare se lo casto a long int...
sinceramente non so piu' cosa fare... non riesco a capacitarmi poi di come un char mi sputi fuori valori che escono dal suo seminato
pls help :cry: