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 :

[debutant]probleme envoi d'une chaine avec send()


Sujet :

Réseau C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 52
    Points : 34
    Points
    34
    Par défaut [debutant]probleme envoi d'une chaine avec send()
    bonjours,

    je voudrai envoyer une chaine de caractere avec send() entre un serveur et un client en tcp sous linux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    char ch[512]="hello";
     
    send(socket, ch, 512, 0);
    mais ca marche pas, j'ai essayé plein de truc, regardé plein de poste mais rien a faire....

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par romainromain
    je voudrai envoyer une chaine de caractere avec send() entre un serveur et un client en tcp sous linux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char ch[512]="hello";
    send(socket, ch, 512, 0);
    mais ca marche pas, j'ai essayé plein de truc
    Tu devrais élaguer, parce que là, on se perd dans les détails...

    Pour du texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       char ch[512]="hello";
       strcat (ch, "\n");
       int n = send(socket, ch, strlen (ch), 0);
       if (n < 0)
       { 
          /* erreur */
       }
    En supposant évidemment que la liaison TCP/IP est établie...

    • Montre le code complet
    • Explique quel est le problème

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    en fait j'ai toujours cette erreur:
    passing arg 1 of `send' makes integer from pointer without a cast

    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    #include	<stdio.h>
    #include	<sys/types.h>
    #include	<sys/socket.h>
    #include	<netinet/in.h>
    #include	<sys/un.h>
    #include	<arpa/inet.h>
    #include 	<pthread.h>
    #include	<stdlib.h>
     
    #define MASOCKET 1200
     
    static struct client cli;
    static int nb_client;
     
    struct client{
     
    	int num;
    	char *pwd;
    };
     
    void *thread_att_client(){
     
    	static int	sock;
    	int		newsock;
    	struct 	sockaddr_in serv_addr, client_addr; 
     
    	void *thread_gest_client(void *newsock){
     
    		char ch[512]="hello";
    		(int *)newsock = accept(sock, (struct sockaddr *) NULL, NULL);	//erreur a gerer????
     
    		if (newsock < 0){
    			perror("Server->Accept error");
    			pthread_exit;
    		}
     
    		if (send(newsock, ch, strlen(ch), 0) < 0){      
                		perror("write error"); 
                		exit(1);    
    		}
     
    		ecoute(newsock);							
     
    		close(newsock);
    		pthread_exit;
    	}
     
    	if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0){
    		perror("Serveur->Socket error");
    		exit(1);
    	}
     
    	bzero(&serv_addr, sizeof(serv_addr));
    	serv_addr.sin_family		= AF_INET;
    	serv_addr.sin_addr.s_addr	= htonl(INADDR_ANY);
    	serv_addr.sin_port		= htons(MASOCKET);
     
    	if(bind(sock, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0){
    		perror("Serveur->Bind error");
    		exit(1);
    	}
     
    	if(listen(sock, SOMAXCONN) < 0){
    		perror("Serveur->Listen error");
    		exit(1);
    	}
     
    	while(1){
     
    		newsock = accept(sock, (struct sockaddr *) NULL, NULL);
     
    		if (newsock < 0)
    			perror("Server->Accept error");
    		else{
     
    			pthread_t cli;
     
    			if(pthread_create(&cli, NULL, thread_gest_client, NULL) < 0)
    				perror("Serveur->Echec creation thread_gest_client");
    			else
    				ecoute(newsock);
    		}
    	}
    }
     
    main(){
     
    	pthread_t th;
     
    	if(pthread_create(&th, NULL, thread_att_client, NULL) < 0){
    		perror("Serveur->Echec creation thread_att_client");
    		exit(1);
    	}	
     
    	(void)pthread_join (th, NULL);
    }
    merci

  4. #4
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (int *)newsock = accept(sock, (struct sockaddr *) NULL, NULL);
    euh? t'as trouvé ça ou?

  5. #5
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par Dark_Ebola
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (int *)newsock = accept(sock, (struct sockaddr *) NULL, NULL);
    euh? t'as trouvé ça ou?
    Effectivement, C'est bizarre

    Et ça aussi :
    Citation Envoyé par man
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int send(int s, const void *msg, size_t len, int flags);
    send attend un int en premier argument, et tu lui passes un... void* !

Discussions similaires

  1. Réponses: 9
    Dernier message: 16/11/2006, 15h23
  2. Affichage de l'adresse d'une chaine avec cout
    Par thierryguilbert dans le forum SL & STL
    Réponses: 4
    Dernier message: 14/03/2005, 16h04
  3. [MFC][debutant] probleme pour déclarer une structure
    Par Robleplongeur dans le forum MFC
    Réponses: 10
    Dernier message: 21/02/2005, 13h29
  4. [Débutant][String] Opérations sur une chaîne
    Par gandalf_le_blanc dans le forum Général Java
    Réponses: 8
    Dernier message: 08/06/2004, 11h59
  5. Réponses: 13
    Dernier message: 10/05/2004, 16h49

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