HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011
-
14 mars 2006 à 14:24
HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011
-
5 avril 2006 à 18:33
Bonjour,
Voici une partie de mon code :
//--------------------------------------------------------------------
#include <windows.h>
#include <winsock2.h>
//Librairie WS2_32.lib ajoutée au projet.
//Version de winsock à utiliser.
WORD wVersionRequested = MAKEWORD(2, 2);
//Initialisation de l'objet WSA.
//------------------------------
WSADATA wsaData;
//WSAStartup retourne 0 en cas de succès.
int iResult = WSAStartup(wVersionRequested, &wsaData);
if (iResult != 0)
return 0;
//Création du socket.
//-------------------
SOCKET Sock;
Sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
//Test si la création du socket a réussi.
if (Sock == INVALID_SOCKET)
{
int iError = WSAGetLastError();
WSACleanup();
return 0;
}
//--------------------------------------------------------------
la fonction WSAStartup passe avec succès(renvoi 0), c'est au niveau de la fonction "socket" que ça coince.
Le debugger m'envoi le message suivant :
Program received signal (SIGSEGV)
Segmentation fault
Value of iResult:
Previous frame inner to this frame (corrupt stack?)
Puis m'ouvre la fenêtre "back-trace" à laquelle je comprend rien.
WSAGetLastError retourne le code erreur 10014 soit sur MSDN :
* Bad address. : The system detected an invalid pointer address in attempting to use
a pointer argument of a call. This error occurs if an application
passes an invalid pointer value, or if the length of the buffer is too
small. For instance, if the length of an argument, which is a sockaddr structure, is smaller than the sizeof(sockaddr).
I don't understand ! please help !
HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011 5 avril 2006 à 18:33
J'ai enfin trouvé le fautif...ZoneAlarm Security Suite !
Vous allez me dire : "Evidemment coco ! faut fermer ton firewall quand tu programme."
Le pire c'est que même éteind il bloque l'api winsock ! J'ai vérifié aucun service lié à ce logiciel ne tourne et il arrive quand même a empêcher des fonctions de se lancer ! c'est très fort !
Ca en dit long sur la transparence du logiciel...merci ZoneLabs pour m'avoir fait perdre un temps précieux (obligé de formater et d'installer les logiciel 1 à 1 pour trouver lequel faisais tout foirer, j'aurai plus parié sur un de mes (nombreux) logiciel cracké...enfin bon bref!).
Heureusement qu'une fois cette daube de ZA Security Suite désinstallé le problème disparait ! (il manquerai plus qu'il ne se désinstalle pas correctement!).
A noté que la version gratuite de ZA n'est pas affecté par le problème...bizarre...
cs_Klephte
Messages postés22Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention 4 janvier 2022 18 mars 2006 à 09:00
salut,
Pourquoi ne pas indiquer le protocole dans la structure que tu passeras en argument de la fonction connect qui suivra ?
j'ai écrit un petit client que tu trouveras à cette adresse www.grandville.net
HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011 18 mars 2006 à 14:25
Merci Klephte pour ta réponse,
Si tu veux dire mettre 0 à la place IPPROTO_TCP, j'ai deja testé ça fais exactement la même chose, la fonction socket() ne passe pas.
Je ne pense pas que ça vienne du code en lui même qui est on ne peux plus simple et tiré en partie de MSDN ! lol.
C'est le message que j'obtiens du debbuger "corrupt stack?" qui m'inquiet...
Je ne vois vraiment pas d'ou ça peu venir. Pour info j'utilise CodeBlocks comme EDI avec compilateur(GNU GCC) et debugger(gdb) tous 2 intégrés à l'EDI. J'ai installé le SDK microsoft pour les librairies et linké la WS2_32.lib dans le projet.
HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011 3 avril 2006 à 22:50
En fait le code compile bien ici aussi mais c'est à l'execution que ça foire. Je l'ai lancé sur Dev-Cpp ça fait la même chose il me met un truc du genre "erreur de segmentation" arrivé à la ligne :
Sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);