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

Développement Discussion :

que faut-il pour un logiciel de messagerie ?


Sujet :

Développement

  1. #1
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut que faut-il pour un logiciel de messagerie ?
    bonjour, mon titre est peut-être pompeux :

    je souhaite écrire un logiciel afin de dialoguer avec certaine personnes.

    Ceci est surtout par curiosité.

    J'aimerais connaitre ce que je peux utiliser et s'il y a des ressources disponibles.

    En gros je voudrais savoir, une fois que j'ai ma phrase en mémoire, comment l'envoyer à un autre pc. Quelles sont les info utiles etc (IP par exemple je pense).

  2. #2
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    personne ?

    ma question n'est peut-être pas assez claire :

    je souhaite que l'on oriente mes recherches.

    Je voudrais savoir s'il est possible de parler à quelqu'un sans passer par un serveur dédié et quel protocole utiliser (assez simple si possible).

  3. #3
    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
    salutations.
    orienter tes recherches?

    et bien, tu sais coder un tout petit peu?
    regarde si ton langage de programmation préféré sais se servir de sockets

  4. #4
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    mon langage de programmation est le langage C (voire le gtk+ pour l'interface).

    Apperemment le C permet l'utilisation des sockets. Merci pour cette "orientation" .

  5. #5
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    j'ai un peu regardé et je me demande si on est obligé de passer apr un serveur ?

    N'est-il pas possible d'éviter cela ?

    edit 1 : j'ai trouvé un exemple pour un client et un pour un serveur et je me demande s'il est possible de faire les deux en même temps sur une même machine.

    edit 2 : vaut-il mieux un schéma connectionless ou connection oriented ?

  6. #6
    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
    Citation Envoyé par Rniamo Voir le message
    j'ai un peu regardé et je me demande si on est obligé de passer apr un serveur ?

    N'est-il pas possible d'éviter cela ?
    c'est possible dans une certaine mesure, voir certains réseaux p2p à architecture décentralisée

    edit 1 : j'ai trouvé un exemple pour un client et un pour un serveur et je me demande s'il est possible de faire les deux en même temps sur une même machine.
    tu peux faire tourner le client et le server sur la même machine

    edit 2 : vaut-il mieux un schéma connectionless ou connection oriented ?
    c'est à toi de voir
    personellement je recommanderais du tcp (connection oriented), c'est plus facile de gérer plusieurs clients, puisque chaque client as sa socket.
    ensuite, en connectionless, tu ne sais pas quand un client arrive, ou quand un client part ... si tu veux maintenir ajour une liste de clients connecté (comme irc), c'est plus pratique

    mon langage de programmation est le langage C (voire le gtk+ pour l'interface).

    Apperemment le C permet l'utilisation des sockets. Merci pour cette "orientation"
    un tuto que je recommande: http://beej.us/guide/bgnet/
    aprés pour l'intégration a GTK, y'as quelques petites choses à voir, notemment les GIOChannels ...

  7. #7
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    j'ai (en m'aidant d'exemples surtout pour les structures utilisée que je ne maitrise pas encore) écrit cela (UDP parce que plus court) :

    pour le 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
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    /*connectionless : Client
       sockets->bind->sendto->recvfrom (client) */
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include <errno.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <netdb.h>
    
    
    int main(int argv,char **argc)
    {
    	int port_nbr=0,cpt=0,i=0;
    	char *addr_IP;
    	char c;
    	FILE *config;
    	
    /**********************************************************************/
    
    	//récupération de l'IP et du port
    	config=fopen("configuration.conf","r");	
    	fscanf(config,"%c",&c);
    	while(c!='p')
    	{
    		cpt++;
    		fscanf(config,"%c",&c);
    	}
    	cpt-=(5+1); //on enlève les caractères non significatifs ("IP : " et "p")
    
    	if (cpt<1)
    		printf("Vérifiez le fichier de configuration");
    	
    	addr_IP=malloc(sizeof(char)*cpt);
    	fseek(config,-cpt-2,SEEK_CUR);
    	while(i<cpt)
    	{
    		fscanf(config,"%c",&(addr_IP[i]));
    		i++;
    	}
    
    	fseek(config,0,SEEK_SET);
    	fscanf(config,"%c",&c);
    	while(c!='t')
    	{
    		cpt++;
    		fscanf(config,"%c",&c);
    	}
    	fscanf(config," : ");
    	fscanf(config,"%d",&port_nbr);
    
    	fclose(config);
    
    /**********************************************************************/
    
    
    /**********************************************************************/	
    
    	//crétaion d'un socket
    	int sock=socket(AF_INET,SOCK_DGRAM,0);
    	if (sock<0)
    	{
    		printf("\nErreur création socket\n");
    		fprintf(stderr,"Erreur %d dans socket %s\n",errno,strerror(errno));
    		if(errno!=EADDRINUSE) exit(errno);
    	}
    	else
    		printf("socket OK\n");
    
    /**********************************************************************/
    
    /**********************************************************************/
    
    	//définition des adresse et ports locaux
    	struct sockaddr_in addr_serv;
    	addr_serv.sin_family=AF_INET;
    	(addr_serv.sin_addr).s_addr=inet_addr(addr_IP);
    	addr_serv.sin_port=port_nbr;
    	int bindding=bind(sock,(struct sockaddr *)&addr_serv,sizeof(struct sockaddr_in));
    	if (bindding==-1)
    	{
    		printf("\nerreur lors de la définition de l'adresse et du port\n");
    		fprintf(stderr,"Erreur %d dans socket : '%s'\n",errno,strerror(errno));
    		if(errno!=EADDRINUSE) exit(errno);
    	}
    	else
    		printf("bind OK");
    
    	printf("\nprêt à envoyer ;)\n");
    
    /**********************************************************************/
    
    /**********************************************************************/
    
    	char *msg;
    	struct sockaddr_in to;
    	to.sin_family=AF_INET;
    	(to.sin_addr).s_addr=*(u_long *)(gethostbyname(addr_IP)->h_addr_list[0]);
    	
    	msg=malloc(sizeof(char)*4);
    	msg[0]='t';msg[1]='e';msg[2]='s';msg[3]='t';
    	int env=sendto(sock,msg,4,0,(struct sockaddr *)&to,sizeof(struct sockaddr_in));
    
    /**********************************************************************/
    
    	return 0;
    }
    pour le 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
    122
    123
    124
    125
    126
    127
    128
    /*connectionless : Serveur
       sockets->bind->recvfrom->..->sendto (serveur)*/
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include <errno.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <netdb.h>
    
    
    
    int main(int argv,char **argc)
    {
    	int port_nbr=0,cpt=0,i=0;
    	char *addr_IP;
    	char c;
    	FILE *config;
    	
    /**********************************************************************/
    
    	//récupération de l'IP et du port
    	config=fopen("configuration.conf","r");	
    	fscanf(config,"%c",&c);
    	while(c!='p')
    	{
    		cpt++;
    		fscanf(config,"%c",&c);
    	}
    	cpt-=(5+1); //on enlève les caractères non significatifs ("IP : " et "p")
    
    	if (cpt<1)
    		printf("Vérifiez le fichier de configuration");
    	
    	addr_IP=malloc(sizeof(char)*cpt);
    	fseek(config,-cpt-2,SEEK_CUR);
    	while(i<cpt)
    	{
    		fscanf(config,"%c",&(addr_IP[i]));
    		i++;
    	}
    
    	fseek(config,0,SEEK_SET);
    	fscanf(config,"%c",&c);
    	while(c!='t')
    	{
    		cpt++;
    		fscanf(config,"%c",&c);
    	}
    	fscanf(config," : ");
    	fscanf(config,"%d",&port_nbr);
    
    	fclose(config);
    
    /**********************************************************************/
    
    /**********************************************************************/	
    
    	//crétaion d'un socket
    	int sock=socket(AF_INET,SOCK_DGRAM,0);
    	if (sock<0)
    	{
    		printf("\nErreur création socket\n");
    		fprintf(stderr,"Erreur %d dans socket %s\n",errno,strerror(errno));
    		if(errno!=EADDRINUSE) exit(errno);
    	}
    	else
    		printf("socket OK\n");
    
    /**********************************************************************/
    
    /**********************************************************************/
    
    	//définition des adresse et ports locaux
    	struct sockaddr_in addr_serv;
    	addr_serv.sin_family=AF_INET;
    	(addr_serv.sin_addr).s_addr=inet_addr(addr_IP);
    	addr_serv.sin_port=port_nbr;
    	int bindding=bind(sock,(struct sockaddr *)&addr_serv,sizeof(struct sockaddr_in));
    	if (bindding==-1)
    	{
    		printf("\nerreur lors de la définition de l'adresse et du port\n");
    		fprintf(stderr,"Erreur %d dans socket : '%s'\n",errno,strerror(errno));
    		if(errno!=EADDRINUSE) exit(errno);
    	}
    	else
    		printf("bind OK");
    
    	printf("\nprêt à recevoir ;)\n");
    
    /**********************************************************************/
    
    /**********************************************************************/
    
    	//réception des données
    	char *msg;
    	int lg_mess=500,lg_rec=0;
    	msg=malloc(sizeof(char)*lg_mess);
    	struct sockaddr_in addr_dep;
    	int taille_addr=sizeof(struct sockaddr_in);
    	while(1)
    	{	
    		lg_rec=recvfrom(sock,msg,lg_mess,0,(struct sockaddr *)&addr_dep,&taille_addr);
    		if (lg_rec==-1)
    		{
    			printf("\nerreur lors de la définition de l'adresse et du port\n");
    			fprintf(stderr,"Erreur %d dans socket : '%s'\n",errno,strerror(errno));
    			if(errno!=EADDRINUSE) exit(errno);	
    		}
    	}
    	printf("%d",lg_rec);
    
    /**********************************************************************/
    
    	//Affichage du message
    	u_long addrDep=(addr_dep.sin_addr).s_addr;
    	msg[lg_rec]='\0';
    	printf("De %s port %d : %s\n",(gethostbyaddr((char *)&addrDep,sizeof(addrDep),AF_INET))->h_name,addr_dep.sin_port,msg);
    	
    
    /**********************************************************************/
    
    
    	return 0;
    }
    Comment je peut tester ? Cele vous semble-t-il correct ?

    edit 1: comment gère-t-on un routeur ? il transmet si les ports sont ouverts ?
    edit 2 : je peux lancer le client et le serveur en même temps ? j'ai une erreur qui me dit que le port est déjà utilisé...
    edit 3 : l'IP c'est l'ip locale ou publique ?
    edit 4 : je ne comprend pas comment le serveur et le client se voit

  8. #8
    Membre régulier Avatar de Onlava
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 92
    Points : 112
    Points
    112
    Par défaut
    salut Rniamo,

    Au même titre que Dark_Ebola, je te conseille vivement d'oublier l' UDP pour un protocole de chat. C'est te mettre des bâtons dans les roues.
    Tournes-toi plutot vers le TCP

    edit 1: comment gère-t-on un routeur ? il transmet si les ports sont ouverts ?
    Il faut au préalable configurer ton routeur pour qu'il retransmette les packets sur certains ports ( NAT )

    je peux lancer le client et le serveur en même temps ? j'ai une erreur qui me dit que le port est déjà utilisé...
    Tu ne peux pas utiliser 2 sockets sur le même port de la meme machine.

    l'IP c'est l'ip locale ou publique ?
    Tu as ton ip locale (127.0.0.1) , ton ip de reseau privé (192.168.x.x) et ton ip
    "internet" attribuée par ton FAI. si le server est sur la même machine
    que le client, ton ip local fera l'affaire.

    je ne comprend pas comment le serveur et le client se voit
    En gros ils partagent un flux d'octet dans lequel ils peuvent lire et écrire.
    ensuite c'est à toi d'inventer un protocole.

  9. #9
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    j'essayerais de coder du TCP mais le schéma connectionless me semblais plus simple...


    Si je ne peux pas utiliser 2 sockets sur le même port comment dois-je configurer mes sockets pour le client et le serveur pour que justement ils partagent le même flux d'octets ?

    j'utilise dans le code un fichier de configuration "configuration_client.conf" ou "configuration_serveur.conf" qui contiennent :

    IP : 127.0.0.1
    port : x

  10. #10
    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
    je doute que tu aie lu intégralement la documentation citée plus haut
    Citation Envoyé par Dark_Ebola Voir le message
    un tuto que je recommande: http://beej.us/guide/bgnet/
    si elle ne te conviens pas, je peux aussi te renvoyer sur:
    http://emmanuel-delahaye.developpez.com/reseaux.htm

  11. #11
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    merci Dark_Ebola, je préfère en effet ce dernier liens (car en français bien sûr). Je regarde ça dé que possible.

  12. #12
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    ce dernier liens donne même la traduction du premier : http://vidalcharles.free.fr/lf/socket.html

  13. #13
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    est-ce que quelqu'un peut me donner un code (ou une référence sur un site) m'expliquant les info à fournir (quel IP, quel ports etc...) pour le serveur et le client svp ?

  14. #14
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 123
    Points
    28 123
    Par défaut
    Bonjour,

    Citation Envoyé par Rniamo Voir le message
    est-ce que quelqu'un peut me donner un code (ou une référence sur un site) m'expliquant les info à fournir (quel IP, quel ports etc...) pour le serveur et le client svp ?
    Avant de commencer à développer, il faut que tu comprennes la logique de ce que tu vas faire : cela te simplifiera grandement la vie.

    Voici quelques pistes :

    1/ Non, tu n'es pas obligé de passer par un serveur pour faire un logiciel de messagerie instantanée
    2/ il faut que tu saches à qui tu vas parler. Pour cela, on utilise les adresses IP, qui sont les équivalents des adresses postales : si tu veux envoyer une lettre à quelqu'un que tu connais mais dont tu ne connais pas l'adresse, tu ne peux pas.
    Le fait de passer par un serveur te permet de jouer le rôle d'un annuaire (comme les pages jaunes par exemple) : lorsque chacun se connecte, il envoi un message spécial au serveur pour lui dire : "je suis titi, et mon adresse IP est XXX"
    Ensuite, quand tu veux parler à quelqu'un, tu te connectes au serveur (que tout le monde connait, comme les pages jaunes), et tu lui dit : "je veux envoyer le message "BONJOUR" à toto". Le serveur se débrouille pour lui envoyer.
    Si tu ne passes pas par un serveur, à toi de conaître l'adresse (IP) de toto - mais saches que celle-ci peut changer, ce qui pose des problèmes.

    Ensuite, on passe sur un plan plus technique, au niveau de la machine : s'il n'y avait qu'un adresse, ca veut dire que tu ne peux faire qu'une seule chose à la fois : soit tu parles à TOTO, soit tu vas sur le net, ...
    Donc, pour éviter ces problèmes a été introduite la notion de port : je cause à toto sur le port 2048, qui est réservé pour mon application de discussion.

    etc etc etc ...

    Les guides mentionnés ci-dessus expliquent cela plutôt bien à mon goût : je te conseil de les lire et de développer les exemples qu'ils proposent, et ensuite cela sera plus facile de faire ce que tu veux.

  15. #15
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    en fait j'ai voulu tester mon code (j'ai toujours pas eu le temps de faire le tcp) sur un seul pc mais je n'y arrive pas...

  16. #16
    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
    on as essayé de t'aider, mais nous n'y arrivons pas!

    donne des détails, pose des questions précises, sinon on y est encore dans 10 pages.

  17. #17
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    ben c'est l'histoire d'IP qui me gène...je mets quoi commen IP pour le serveur et pour le client pour tester mon code sur mon pc ?

  18. #18
    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
    pour le serveur, la valeur INADDR_ANY iras bien.
    par contre pour le client, utilise 127.0.0.1

  19. #19
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    bon mon code ne marche pas...

    si quelqu'un peut tester svp :

    Sockets.zip

Discussions similaires

  1. Que faut il pour répondre au téléphone depuis son pc
    Par Coussati dans le forum Périphériques
    Réponses: 16
    Dernier message: 23/05/2008, 23h17
  2. Que faut-il pour faire marcher PMO ?
    Par code34 dans le forum PhpMyObject
    Réponses: 1
    Dernier message: 16/02/2008, 20h24
  3. Que faut-il pour débuter en J2ME
    Par choupeo dans le forum Java ME
    Réponses: 2
    Dernier message: 11/12/2007, 14h27
  4. que faut-il pour être un bon programmeur?
    Par H@keR dans le forum Etudes
    Réponses: 4
    Dernier message: 25/11/2007, 19h17
  5. que faut-il pour importer une base de données
    Par cladsam dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 25/09/2007, 14h41

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