IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

[winsock2.h] Connexions successives


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut [winsock2.h] Connexions successives
    Bonjour,

    je suis entrains de developper un client qui a besoin de reinitialiser la connexion (deconnexion et reconnexion) apres la reponse du serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    #include <stdio.h>
    #include <winsock2.h>
     
    int process(SOCKET sock,SOCKADDR_IN sin);
     
    int main()
    {
    	char ip[]="127.0.0.1";
    	int port=80;
     
    	WSADATA WSAData;
    	WSAStartup(MAKEWORD(2,0), &WSAData);
     
    	SOCKET sock;
    	SOCKADDR_IN sin;
    	sock = socket(AF_INET, SOCK_STREAM, 0);
    	sin.sin_addr.s_addr = inet_addr(ip);
    	sin.sin_family	    = AF_INET;
    	sin.sin_port	    = htons(port);
    	if(connect(sock, (SOCKADDR *)&sin, sizeof(sin))==SOCKET_ERROR){
    		printf("[-] Erreur lors de la connexion a %s:%d !\n",ip,port);
    		return -1;
    	}
    	printf("[+] Connecte a %s:%d !\n",ip,port);
    	process(sock,sin);
    	return 0;
    }
     
    int process(SOCKET sock,SOCKADDR_IN sin)
    {
    	int l_req=0;
    	char data[]="datadatadata";
    	l_req=send(sock,data,strlen(data),0);
    	if (l_req<=0){
    		printf("[-] Erreur lors de l'envoi !\n");
    		closesocket(sock);
    		return -1;
    	}
    	memset(data,0,strlen(data));
    	l_req=recv(sock, data, 11,0);
    	printf("%s",data);
    	closesocket(sock);
    	sock = socket(AF_INET, SOCK_STREAM, 0);
            //Nouvelle connexion
    	if(connect(sock, (SOCKADDR *)&sin, sizeof(sin))==SOCKET_ERROR){
    		printf("[-] Erreur de connexion !\n");
    		return -1;
    	}
            //------------------
    	return 0;
    }
    Le probleme est que je n'arrive pas à savoir pourquoi la nouvelle connexion echoue

    quelqu'un aurait une idee ?

    merci

    ++nairolf

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut
    J'ai resolu le probleme en ajoutant un Sleep(500) avant la reconnexion

    ++ nairolf

  3. #3
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    pourquoi il a besoin de reinitialiser la connexion ?
    pb de sécurité ?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    il peut y avoir plusieurs raisons..

    Celle que tu donnes, mais aussi optimisation du nombre de processus, action quand on s'aperçoit qu'un socket est "gelé", etc..

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut
    bonjour,

    Citation Envoyé par hiko-seijuro
    pourquoi il a besoin de reinitialiser la connexion ?
    Citation Envoyé par souviron34
    mais aussi optimisation du nombre de processus
    Je n'ai besoin que des 11 premiers octets de la requette que le serveur m'envoi, donc dans soucis d'optimisation je prefere reinitialiser la connexion afin de ne pas avoir à traiter une requette qui peut peser plusieurs Ko.

    ++nairolf

Discussions similaires

  1. [2.x] connexion, success handler et referer
    Par symfony_dev dans le forum Symfony
    Réponses: 2
    Dernier message: 15/05/2014, 14h10
  2. Problème de connexions successives à MYSQL
    Par nahoula1231 dans le forum C++
    Réponses: 4
    Dernier message: 06/12/2013, 12h29
  3. Winsock connexion successive impossible
    Par Ramdoulou dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 16/12/2010, 18h19
  4. Connexions successives & Res Id
    Par lasyan3 dans le forum Administration
    Réponses: 0
    Dernier message: 26/10/2010, 13h07
  5. Perl Net::Telnet connexions successives, réalisable ?
    Par Capitaine Krabs dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 25/08/2008, 16h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo