Problème de fermeture de connexions [Résolu]

Signaler
Messages postés
118
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
2 novembre 2007
-
Messages postés
118
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
2 novembre 2007
-
Bonjours. Enfait mon problème c'est que lorsque je lance un programme que j'ai créé celui-ci se déroule parfaitement bien. Mais après sa fermeture et lors du relancement de la même application j'ai un problème de fuite de mémoire. La mémoire vive alloué a mon application grossit de plus en plus sans s'arrêter. Je n'ai toujours pas compris d'ou pouvais venir le problème.

Voila mon code :
#include <stdio.h>
#include <winsock2.h>

#ifdef _MSC_VER
#pragma comment(lib,"ws2_32.lib")
#endif

SOCKET m_nSocket;
bool stop = false;

DWORD WINAPI test(void *){
    SOCKADDR_IN Destination;
    char ip[256];

    WSADATA init;
    WSAStartup(MAKEWORD(2,2), &init);

    unsigned long t = inet_addr("127.0.0.1");
   
    m_nSocket = socket(AF_INET,SOCK_STREAM,0);
    if(m_nSocket == INVALID_SOCKET)
        return 1;

    Destination.sin_family=AF_INET;
    Destination.sin_addr.s_addr=t;
    Destination.sin_port=htons(33334);

    while(!stop){
        printf("connect = %d\n", connect(m_nSocket, (struct sockaddr*)&Destination, sizeof(Destination)));
    }

    closesocket(m_nSocket);

    printf("WSACleanup()\n");
    WSACleanup();
    return 0;
}

int main(){
    CreateThread(NULL, 0, test, NULL, 0, NULL);
    system("pause");
    stop = true;

    Sleep(INFINITE);
    return 0;
}

Merci d'avance.

3 réponses

Messages postés
118
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
2 novembre 2007

C'était un programme d'exemple, et le char ip[] j'ai oublier de l'enlever... Les erreurs sont "volontaire" dans le sens ou je n'écrit jamais du code comme sa. Mais j'ai essayer de syntétisé le plus rapidement possible le problème auquel j'été confronté et qui me semblé très étrange.
En fait j'ai appris que c'été mon système qui posé problème et non pas le code. Un simple redémarrage a résolu entièrement le problème.
Enfin merci quand même :)
Messages postés
240
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
22 mars 2009

   salut bon déja

char ip[256]; << tu l'utilise ou ?
unsigned long t << utilité de la variable ???

il faut faire un test pour sa :     WSAStartup(MAKEWORD(2,2), &init);

ensuite quand tu quitte:
 if(m_nSocket == INVALID_SOCKET)
        return 1;

il faut ajouter un WSACleanup(); avant le return 1; ^^

  Sleep(INFINITE); mm

un while(1)_sleep(1000);

ne serait pas mieux ?

ciao et bon codage :)
Messages postés
240
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
22 mars 2009

mm j'ai oublié le bug vient surement de cette ligne :

    while(!stop){
        printf("connect = %d\n", connect(m_nSocket, (struct sockaddr*)&Destination, sizeof(Destination)));

tu fait des connects sans arrêt jusqu'a qu'une touche soi appuyé .... bof