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

C++ Discussion :

probleme socket C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 174
    Par défaut probleme socket C++
    Bonjour, j'ai un probleme avec mon programme de socket:

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    #include <iostream>
    #define LINUX
     
     
    using namespace std;
     
     
    #ifdef LINUX
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <stdlib.h> 
    #define INVALID_SOCKET -1
    #define SOCKET_ERROR -1
    #define closesocket(param) close(param)
     
     
    typedef int SOCKET;
    typedef struct sockaddr_in SOCKADDR_IN;
    typedef struct sockaddr SOCKADDR;
     
    int main(int argc, char *argv[])
    {
    	SOCKET serveur;
    	SOCKET client;
    	SOCKADDR_IN sin;
    	SOCKADDR_IN sinc;
    	int val=1;
     
      	cout << "linux" << endl;
    	serveur=socket (AF_INET, SOCK_STREAM, 0);
    	if(serveur != -1)
    	{
    		cout<<"fonction socket.......................................[OK]"<<endl;
     
    		sin.sin_addr.s_addr = htonl (INADDR_ANY);
        		sin.sin_family = AF_INET;
        		sin.sin_port = htons (23);
                    cout<<"avant fonction bind............................[OK]"<<endl;
    		if(bind(serveur,(SOCKADDR *)&sin, sizeof(sin)) != -1)
    		{
    			cout<<"fonction bind............................[OK]"<<endl;
    			if (listen(serveur,1) != SOCKET_ERROR)
    			{
    				cout<<"fonction listen.......................[OK]"<<endl<<"attente d'une connexion"<<endl;
    				bool val=true;
    				while(val)
    				{
    					cout<<"message apres la boucle"<<endl;
    					socklen_t taille = sizeof(sinc);
    					client=accept(serveur,(SOCKADDR *)&sinc,&taille);
    					if(client != SOCKET_ERROR)
    					{
    					cout<<"connexion etablie"<<endl;
    					val=false;
    					}
    				}
    			}
    		}
     
     
    	}
    	closesocket(serveur);
    	closesocket(client);
     
     
     
      return EXIT_SUCCESS;
    }
     
    #endif
     
    #ifdef WINDOWS
    int main(int argc, char *argv[])
    {
      cout << "windows" << endl;
     
      return EXIT_SUCCESS;
    }
     
    #endif
    le texte "avant fonction bind...[OK]" S'affiche mais le texte "fonction bind...[OK] ne s'affiche pas. j'en conclue donc que la fonction binf renvoie -1 car si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(bind(serveur,(SOCKADDR *)&sin, sizeof(sin)) == -1)
    , le texte "fonction bind...[OK]" fonctionne.

    Mais je ne voit pas où est l'erreur.
    Pouvez vous m'aidez à resoudre ce probleme?

    merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 174
    Par défaut
    je vient de m'apercevoir que le port est 23 or si on ne lance pas le serveur en root, linux n'accepte pas les port inferieur a 1023.
    Je vais essayé en changeant

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 174
    Par défaut
    sa fonctionne!

    merci pour ceux qui cherchait...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Système] probleme socket php
    Par sneb5757 dans le forum Langage
    Réponses: 3
    Dernier message: 03/06/2007, 11h27
  2. Probleme socket requete POST
    Par killuaster dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 15/10/2006, 15h15
  3. [Système] Probleme Socket Php
    Par Reaggaman dans le forum Langage
    Réponses: 4
    Dernier message: 01/03/2006, 18h55
  4. Problemes socket
    Par Proxius dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/07/2005, 14h25
  5. Probleme socket
    Par Spolix dans le forum Réseau
    Réponses: 6
    Dernier message: 03/10/2003, 06h50

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