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

Visual C++ Discussion :

Probleme accept socket


Sujet :

Visual C++

  1. #1
    Membre confirm�
    Inscrit en
    Juin 2007
    Messages
    69
    D�tails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par d�faut Probleme accept socket
    Bonjour
    Je fais un serveur sous Visual C++, qui doit se lancer en clikant sur un bouton:
    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
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
     
    	WSADATA initialisation_win32; 
    	int erreur; 
    	int tempo; 	
     
    	SOCKET id_de_la_socket; 
    	SOCKET id_de_la_nouvelle_socket; 	
                 SOCKADDR_IN information_sur_la_source; 
    	erreur=WSAStartup(MAKEWORD(2,2),&initialisation_win32); 
    	id_de_la_socket=socket(AF_INET,SOCK_STREAM,0); 
                 information_sur_la_source.sin_family=AF_INET;
    	information_sur_la_source.sin_addr.s_addr=INADDR_ANY; 	
                 information_sur_la_source.sin_port=htons(33333); 
    	erreur=bind(id_de_la_socket,(struct sockaddr*
    &information_sur_la_source,sizeof(information_sur_la_source));
     
    		erreur=99; 
    	while(erreur!=0) 
    		erreur=listen(id_de_la_socket,1);
     
    	tempo=sizeof(information_sur_la_source); 	
                 id_de_la_nouvelle_socket=accept(id_de_la_socket,(struct sockaddr*)&information_sur_la_source,&tempo);
     
     
    			 }
    Or si j'enl�ve le accept tout semble marcher, mais quand je garde cette ligne toute l'application se bloque... Quelqu'un saurait comment faire?

  2. #2
    R�dacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par d�faut
    la fonction accept() fonctionne en mode bloquant. elle se bloque jusqu' � ce une connection soit etablie.
    Pour eviter que l' application se bloque, il faut la mettre un thread.

  3. #3
    Membre confirm�
    Inscrit en
    Juin 2007
    Messages
    69
    D�tails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par d�faut
    Ah Ok... Et comment on fait �a?

  4. #4
    R�dacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299

  5. #5
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    � ta place, je n'utiliserais pas Winsock en .Net.
    Tu as les classes de System.Net.Sockets qui devraient t'�tre plus utiles...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    R�dacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par d�faut
    Citation Envoy� par M�dinoc Voir le message
    � ta place, je n'utiliserais pas Winsock en .Net.
    Tu as les classes de System.Net.Sockets qui devraient t'�tre plus utiles...
    Pourquoi ne devrait-on pas utiliser winsock en .net ?
    Je le fais depuis plusieurs mois et je n' ai eu aucun soucis.

  7. #7
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    C'est juste une question de go�t personnel, sans doute...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    R�dacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par d�faut
    Citation Envoy� par M�dinoc Voir le message
    C'est juste une question de go�t personnel, sans doute...
    Je croyais qu' il y' a des avantages en utilisant le System.Net.Sockets.

    Il y' a une chose que je ne comprend. J' ai eu � developpez un clients/serveur en utilisant le winsock. J' ai mis toutes les fonction dans des threads (accept, read, send, ...) mais il arrivait que l' application se bloque quand un client ne repond pas.Pourtant, j' avais bien utilis� le fameux select().
    J' avais utilis� la construction suivante pour les threads :
    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
     
    delegate void DelegateHandler();
    DelegateHandler ^socketDelegate;
    void socketOpeation()
    	{
    		...
    	}
    ...
     
    //quelque part
    Threading::Thread ^t = gcnew Threading::Thread(gcnew Threading::ThreadStart(this, &Form1::ExecuteLongTraitement));
    		t->Start();
    ...
    //
     
    void ExecuteLongTraitement()
    	{
    	  while (true)
                    {...}	
     
    	}

Discussions similaires

  1. Probleme client socket
    Par BOUBOU81 dans le forum C++Builder
    R�ponses: 7
    Dernier message: 19/04/2010, 21h03
  2. Problemes des Sockets
    Par hinda dans le forum MFC
    R�ponses: 1
    Dernier message: 14/06/2006, 16h03
  3. [VB6] Probleme de socket
    Par johnson95 dans le forum VB 6 et ant�rieur
    R�ponses: 5
    Dernier message: 09/06/2006, 09h39
  4. Probleme de socket
    Par Pragmateek dans le forum C++
    R�ponses: 14
    Dernier message: 11/03/2006, 22h37
  5. [Debutant] Probleme connection socket
    Par sorry60 dans le forum R�seau
    R�ponses: 38
    Dernier message: 12/11/2005, 11h46

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