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 :

Envoi d'un tableau de char


Sujet :

Réseau C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 38
    Par défaut Envoi d'un tableau de char
    Bonjour je voudrais faire un master-mind en réseau avec un serveur et un client.

    Je ne comprend pas comment envoyer , par exemple un tableau de char (déjà rempli).
    Je voudrais qu'il s'envoie automatiquement .
    Grâce à ça j'aimerais envoyer des messages pré-enregistrés.

    Pourriez-vous m'aider ?

    Si vous voulez je peux vous poster mon code .

    Merci d'avance.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 062
    Billets dans le blog
    143
    Par défaut
    Bonjour,

    Alors montrez nous votre code.

    Le réseau en C n'est pas la chose la plus facile, mais il y a de multiples tutoriels sur devellopez.com
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 38
    Par défaut
    Le code 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
    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
     
    #include<stdio.h>	
    #include<winsock2.h>
    #include<iostream>
    #include <iomanip>
    #include <conio.h>
    #include <time.h>
     
    using namespace std;
     
    #pragma comment(lib,"ws2_32.lib")
     
    #define N 1000
     
    void AfficherUn( int * tab , int n ) 
    {
    	cout <<endl ;
    	for ( int i = 0 ; i < n ; i++ )
    	{	
    		cout <<setw(7)<< tab[i];
    	}
     
     
    }
     
    void Afficher ( int * tab , int nb, char M ) 
    {
    	cout << endl; 
    	cout << " Affichage du vecteur " << M << " \n " ;
    	for ( int i = 0 ; i < nb ; i++ )
    	{
    		cout << " V[" << setw(2) << i << "] " ;
    	}
    	AfficherUn (tab, nb) ;
    	cout <<endl ;
    }
     
    int Combinaison(int * & tab)
    {
    	int nb=4;
    	const int max=10, min=0;
    	tab=new int[nb];
    	for(int i=0;i<nb;i++)
    	{
    		tab[i]=(rand()%(max-min+1));
    	}
    	return nb;
     
    }
     
    void main()
    {
    	WSADATA wsa;  
    	WSAStartup(MAKEWORD(2,0),&wsa);			//initialisation de la socket
     
    	SOCKET server;							// les socket sont associées a une ip et un num de port
    	SOCKET sock;
     
    	SOCKADDR_IN sinserv;					// on cree une struc du type sockaddr 
    	SOCKADDR_IN sin;		
    	int port=1100;
     
    	//initialisation et saisi des informations
    	cout<<"Port : "<<port<<endl;
    	//cin>>port;
     
     
     
    	sinserv.sin_family=AF_INET;	
    	sinserv.sin_addr.s_addr=INADDR_ANY;
    	sinserv.sin_port=htons(port);
     
    	//creation de la socket
    	server=socket(AF_INET,SOCK_STREAM,0);
     
    	//la socket est configuré pour écouter l'adresse et le port saisi
    	bind(server,(SOCKADDR*)&sinserv,sizeof(sinserv));
    	const int M=1000;
    	//pas de file d'attente
     
    	char buffer[N];
    	char essai[M]= "Rouge , Vert , Bleu";
    	listen(server,0);
     
    	int sinsize;
    	int err=0;
    	bool A = true;
     
    	while(1)
    	{
    		sinsize=sizeof(sin);
    		//acceptation ou non des appels
    		if((sock=accept(server,(SOCKADDR*)&sin,&sinsize))!=INVALID_SOCKET)
    		{
    			cout <<"connection Aziz" << endl;
    			while(err>-1)
    			{
     
    				if(A==true)
    				{
    					memset(buffer,0,sizeof(buffer));
    					cin.getline((char*)buffer, N);
    					err=send(sock,buffer,sizeof(buffer),0);
     
     
    					A=false;
    				}
    				else
    				{
    					recv(sock,buffer,sizeof(buffer),0);
    					cout<<buffer;
    					cout<<endl;
     
    					A=true;
    				}
    			}
     
    		}
    	}
     
    }
    Le code client

    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
     
    #include<stdio.h>	
    #include<stdio.h>	
    #include<winsock2.h>
    #include <conio.h>
    #include <iostream>
    	using namespace std;
     
    #pragma comment(lib,"ws2_32.lib")
     
    #define N 1000
     
    void Affichercombi(int tab[4])
    {
    	cout<<"|";
    	for(int i=0;i<4;++i)
    	{
    		cout<<tab[i]<<"|";
    	}
    	cout<<endl;
    }
    void main()
    {
    	WSADATA wsa; 
    	WSAStartup(MAKEWORD(2,0),&wsa);	
     
    	SOCKET sock;	
    	SOCKADDR_IN sin;
    	//char ip[15]={"172.22.44.57"};
    	//char ip[15]={"192.168.1.25"};
    	char ip[15]={"192.168.1.25"};
    	int port=1100;
    	int err=0;
     
    	//initialisation et saisi des informations
    	//cout<<"Ip : ";
    	//cin>>ip;	
     
    	/*cout<<"Port : ";
    	cin>>port;*/
     
    	sin.sin_family=AF_INET;
    	sin.sin_addr.s_addr=inet_addr(ip);
    	sin.sin_port=htons(port);
     
    	//creation de la socket
    	sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
     
    	//connexion a la socket
    	if(connect(sock,(SOCKADDR*)&sin,sizeof(sin)))
    	{
    		cout<<"La connection a echoue"<<endl;
     
    		system("PAUSE");
    	} else {
     
    		int err=0;
    		char buffer[N];
     
    		int ess=0;
    		int combi[4]={0};
    		Affichercombi(combi);
    		cout<<"============================="<<endl;
    		bool A=false;
    		cout<<"connexion reussie.."<<endl;
    		while(1)			
    		{
    			if(A==false)
    			{
    				recv(sock, buffer, sizeof(buffer),0);
    				if(buffer[0]=='R')cout<<"bien joue";
    				else{cout<<"jack";}
    				cout<<endl;
    				A=true;
    			}
    			else
    			{
    				memset(buffer,0,sizeof(buffer));
    				cin.getline((char*)buffer, N);
    				send(sock, buffer, sizeof(buffer),0);
    				A=false;
     
     
     
    			}
    		}
    	}
     
    	WSACleanup();
     
    	system("PAUSE");
    }
    Je veux pouvoir tester le tableau de char , que mon client va envoyer au serveur . Et après pouvoir lui retourner les caractères bon , avec leurs positions.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Ce n'est pas du C...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 38
    Par défaut
    Je le sais , c'est du c++ mais je n'es pas vu de rubrique "Réseau" en C++ donc j'ai poster ici , mais cela je pense ne vous empêche pas de m'éclairer ?

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 062
    Billets dans le blog
    143
    Par défaut
    Je dois dire que je ne sais pas où est le problème, dans le sens, vous ne l'avez pas vraiment expliqué ?

    La connexion se fait elle ? Le message est il transmis ?
    Que voulez vous faire ? Qu'appelez vous un envoie automatique d'un tableau ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 38
    Par défaut
    Les messages s'envoient correctement , mais ce que je veux faire , c'est que le client va envoyer une combinaison. Exemple [R ,V,B] pour rouge vert bleu .
    Le serveur va prendre la réponse du client , et va vérifier si chaque éléments et à la bonne position.
    C'est le principe du MasterMind.
    Comprenez vous ce que je veux dire ?

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 062
    Billets dans le blog
    143
    Par défaut
    Donc, vous avez votre combinaison dans un format bien précis:
    C1;C2;C3;C4;C5

    Vous envoyer cela dans un tableau de 5 char. C'est comme si vous envoyez un message dans votre code d'exemple. Vous indiquer la longueur et le message et c'est parti.
    Après, le serveur reçoit ... il lit, il dit si c'est bon ou pas, il remplit un message et il envoit. Le client reçoit et voilà.
    Non ?
    Ou est ce que cela bloque ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 38
    Par défaut
    Oui c'est bien ça.
    Je ne vois pas comment le faire en faite .

  10. #10
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 062
    Billets dans le blog
    143
    Par défaut
    Et bah là ... je vous conseille la lecture de ce tutoriel -> http://broux.developpez.com/articles/c/sockets/

    De plus, je vous conseille de faire des essais, essayer de changer le code que vous avez pour qu'il fasse ce que vous voulez.

    Sinon, en exemple de code, ça doit donner un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char solution[5]= "RBVJO";
     
    send(sock, solution sizeof(char)*5,0)
    Plus ou moins ...
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 38
    Par défaut
    Merci pour ces conseils je vais essayer et je vous tiendrais au courant.

    Edit:Après quelques essais non concluant, votre aide et le tutoriel que vous m'avez fourni ma fortement aidé.

    Je vous remercie.

Discussions similaires

  1. retrouver unesuite de caractères dans un tableau de char
    Par petitours dans le forum C++Builder
    Réponses: 17
    Dernier message: 12/07/2005, 23h43
  2. Ansistring et tableau de char
    Par rabbi_jaccob dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/12/2004, 11h51
  3. Envoi d'un tableau par pipe
    Par Chicard dans le forum Développement
    Réponses: 2
    Dernier message: 10/03/2004, 09h47
  4. Adresse d'un tableau de char
    Par Trap D dans le forum C
    Réponses: 8
    Dernier message: 23/12/2003, 12h02
  5. Réponses: 4
    Dernier message: 10/10/2003, 18h04

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