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

Web & réseau Delphi Discussion :

[D7] Comment feriez-vous une messagerie instantanée façon MSN ?


Sujet :

Web & réseau Delphi

  1. #1
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut [D7] Comment feriez-vous une messagerie instantanée façon MSN ?
    Bonsoir,

    J'ai dans la tête de faire ce petit projet perso afin de cerner un peu mieux les composant ICS et également pouvoir faire apprendre et étendre mes connaissances en ce qui concerne la communication entre client et serveur ...

    Pour le moment, j'arrive à connecter plusieurs clients sur un serveur ... Ce que je cherche à faire, c'est comme MSN un peu ... J'ai un client qui se connecte et on regarde quels sont ses amis en ligne, hors ligne ...
    C'est sur cette partie que je ne sais pas trop comment faire ... Logiquement, on devrait s'inscrire sur le site donc avec un pseudo et mot de passe puis, l'ajout de contact se fait dans la BDD ...

    Ainsi, on aurait quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    - Personne 1 Connectée
    |->Ami 1 (connecté)
    |->Ami 2 (hors ligne)
    - Personne 2 Connectée
    |->Ami 1(Hors Ligne)
    etc etc
    Avec cette solution, je ne sais pas comment faire concrètement ! Car on doit bien savoir quand une personne se connecte, donc en gros, scanner la BDD toute les secondes non ?

    Pourriez vous m'indiquez des pistes afin que je puisse élaborer de façon efficace mon projet ?

    J'espère avoir été clair dans mes explications! (si ce n'est pas le cas, nh'ésitez pas )

    Merci d'avance
    Cordialement

  2. #2
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Non.
    La BdD ne contient que les parametres utilisateur a sauvegarder : Liste des amis, groupes, Icones, etc ....
    Et encore c'est pour une question de pratique et de mobilitée, car a la base seul le couple login/pwd est necessaire pour etablir la connection.

    Pour tout le reste ca se passe par actions.
    Quand un utilisateur se connecte le serveur envoit soit un broadcast a tous les clients specifiant la connection de cet user (filtre par les client qui ne reconaisse pas cet utilisateur comme "ami") ou jsute aux client possedant cet user dans ses amis.

    La deconnection du client est transmise au serveur par le client lui meme ou detectee par le serveur suite a une rupture de connection.
    Le serveur en informe donc qui de droit.

    Entre temps, les clients n'ont pas a verifier la presence des amis car ils sont supposé online ou offline tant que le serveur ne dit pas le contraire.

    C'est au serveur a verifier la connectivitee des client par interval reguilier pour eviter des "Zombie"
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  3. #3
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Heu, afin que dans mon esprit ça soit clair, j'aurai besoin :

    -d'une BDD qui contiendra les listes d'amis de chacun ainsi que les icones etc etc
    -un programme qui fera office de serveur logé sur un serveur ftp par exemple ?

    Car pour ce qui est de la gestion des connexions tu me dit que le serveur doit envoyer une info en broadcast à tous les clients ...

    Donc il faut que je fasse un programme en CGI par exemple non?

    Peux tu m'éclaircir un peu plus sur ce point ? Désolé pour mes questions qui peuvent paraître un peu "bêtes"

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    Citation Envoyé par ero-sennin
    Heu, afin que dans mon esprit ça soit clair, j'aurai besoin :

    -d'une BDD qui contiendra les listes d'amis de chacun ainsi que les icones etc etc
    -un programme qui fera office de serveur logé sur un serveur ftp par exemple ?

    Car pour ce qui est de la gestion des connexions tu me dit que le serveur doit envoyer une info en broadcast à tous les clients ...

    Donc il faut que je fasse un programme en CGI par exemple non?

    Peux tu m'éclaircir un peu plus sur ce point ? Désolé pour mes questions qui peuvent paraître un peu "bêtes"
    le problème c'est que tu parles d'un serveurs statique (HTTP, FTP), il n'envoie donc aucune information et c'est au client de lui demander régulièrement s'il y a du nouveau, tout comme un lecteur de mail consulte régulièrement la boite.

    Dans l'idéal tu as un programme serveur qui gère les sessions utilisateur et peut les avertir quand un ami se connecte.

    Tu peux t'en sortir tout de même avec un serveur statique, mais dans ce cas c'est le client qui se connecte qui va bosser.

    1) je me m'identifie sur le serveur, celui-ci conserve mon adresse IP
    2) un ami s'identifie sur le serveur, celui-ci conserve son adresse IP et l'informe que je suis déjà connecté à telle adresse.
    3) l'ami m'informe directement sans passer par le serveur qu'il est connecté.

    A noter que ce 3ième point n'est possible que si je possède une adresse IP publique, c'est à dire que je ne suis pas dans un réseau privé derrière un routeur (Freebox en mode router), sauf à configurer le router pour faire suivre les requêtes d'un port prédéfini.

    Il est aussi important de noter que deux clients en mode routeur ne pourront pas dialoguer ensemble (sauf à configurer le router).

    Sans adresse IP publique, il faut un serveur actif auquel je puisse resté connecté, sinon il m'appartient d'interroger périodiquement le serveur (HTTP, FTP, POP3...).
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Effectivement tu nous avait pas tout dit

    comme l'a confirmé Paul Toth, un logiciel de messagerie tourne autour d'un serveur logiciel qui sert de centre de commande.
    tout transite par lui, et c'est lui qui s'occupe de transferer les infos d'un cient a l'autre.
    A aucun moment les client n'ont de connection directe avec un autre client. Leur seul interlocuteur est le serveur.

    Par contre cela necessite de faire tourner l'application sur une machine serveur Window pour application Win32 ou bien linux (ce que je te conseille) si tu developpe le serveur en C/c++ (Java ?)

    90% des FAI hebergent les site sur des serveur linux. C'est pour ca que je t'en parle.
    Ensuite, pas beaucoup propose de faire tourner des applications .... point essentiel pour gerer ton serveur.

    Sinonj'ai une solution alternative a celle de Paul : repercuter le serveur sur l'ensemble des Clients.
    A la limite tu n'as meme plus besoin d'une BdD sur serveur .... Sauf pour gerer le Probleme des IP dynamique qui sont encore asez presentes.

    Donc le client se connecte sur le serveur, recupere sa liste d'amis, se connecte sur tous les amis connecté et dialogue avec eux.
    Quand un clietn se deconnecte, il en avertit tous ses amis connecté a lui.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  6. #6
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Note : Si tu ne gere pas de transferts de fichiers, tu peux recuperer un vienx PC 166 ? 533 ? 1g ? avec le max de ram possible et installe y Ubuntu Server.

    Developpe ton server en C, C#, C++, ou java et installe le sur ton serveur ubuntu.
    Sous linux tu n'as pas besoin d'ecran/clavier /souris car tu peux manipuler un PC Via Telnet
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  7. #7
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Merci pour ces solutions !

    Je crois bien que ce n'est pas gagné ! Je ne dispose pas de serveur tel que l'entendait, mais juste un compte ftp ...

    J'avais donc envisagé la solution de sauvegarder les IP au niveau de la BDD et de travailler avec... mais niveau charge de travailler, cela va nécessité des actualisations sans cesse !

    Sinon Clorish, peux tu m'éclaircir sur ce point :

    Sinon j'ai une solution alternative a celle de Paul : repercuter le serveur sur l'ensemble des Clients.
    A la limite tu n'as meme plus besoin d'une BdD sur serveur .... Sauf pour gerer le Probleme des IP dynamique qui sont encore asez presentes.
    Pas simple, pas simple du tout même

    PS: Pour le vieux PC, j'en ai bien un, mais de là à réussir à configurer un Ubuntu, faire fonctionner le serveur, tout configurer etc etc, je ne pense pas que j'y arriverai avec mon niveau actuel En tout cas, c'est sur que ça à l'air passionnant

  8. #8
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Oui En fait c'est pas compiliqué :

    En fait, le Client se connecte a la BdD, recupere la lsite des amis connectés.

    Une fois la lsite en sa pocession, il etablie le contact sur chaques amis (server socket) pour ouvrir un canal.
    ensuite, le systeme de dialogue Client a Client est le meme que de client a serveur, l'identification du client dest en moins.

    Pour le PC Ubuntu, les dernieres versions s'installent en quelques click, avecv une option serveur LAMP (Linux/Apache/MySql/Php) pour tout parametrer.

    quelques recherches sur le net pour bidouiller les ficheirs de config afin de creer les comptes necessaire et zou.
    Ca ne demande pas trop de connaissances.
    Le plus dur risque d'etre de coder le serveur dans un langage autre que delphi si tu n'en connait pas.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  9. #9
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    Citation Envoyé par Clorish
    En fait, le Client se connecte a la BdD, recupere la lsite des amis connectés.

    Une fois la lsite en sa pocession, il etablie le contact sur chaques amis (server socket) pour ouvrir un canal.
    oui, mais comme je le disais précédemment, il faut que le client à contacter possède une adresse IP publique...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  10. #10
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Ok!

    On est d'accord sur ce point mais excusez moi, j'ai encore un peu de mal à cerner juste une chose essentielle qui est la connexion et déconnexion d'un client!

    Imaginons, je me connecte, je récupère la liste de mes amis connectés donc, il reste ceux qui sont non connectés qui pourront éventuellement se connecter par la suite ...

    Bon, si j'ai 15 contacts de connectés, je devrais créer 15 sockets même si je ne leur parle pas?
    Et pour ce qui est de la déconnexion, comment puis-je en être averti ? Un déconnexion non prévu par exemple ...

    En résumé, j'ai :
    -Une Bdd qui va contenir tous mes amis et leur état (connecté ou non)
    -A ma connexion, je récupère tous mes amis et pour chaque amis connecté, je crée directement un canal pour le dialogue (même si celui-ci est inutilisé)
    - Lors de la déconnexion je ne vois pas comment parvenir un quelque chose de satisfaisant ... A moins que l'on ne le gère dans l'événement du composant lors d'une déconnexion ?

    Voila, j'ai bien tout résumé ? J'espère que c'est bien dans ce sens là qu'il fallait que je comprenne le tout

    Merci de votre aide
    Cordialement

  11. #11
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Paul >> Oui mais il en a forcement une sinonil ne se connecterais pas sur internet.
    Apres c'ets peut etre un rooteur ettectivement ... mais la redirection de port est chose courante.
    Pour peut que le client specifie un Port specifique dans sa config et le transmette au serveur pour l'enregistrer dans la BdD, le Client qui recupereras la liste recevra le port de connection ....
    Ca permet de conencter plusieurs PC derriere le meme rooteur.

    ero-sennin >>
    Tu n'ets pas obliger de conserver le socket .. jsute etablir la connection avertir le client et se deconnecter ... la connection se referas dynamiquement a chaques envoie de chaine .... ou la deconnection se fait apres un laps de temps d'inactivitée.

    L'ideal etant d'avoir un serveur independant
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  12. #12
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Hum ... Ok!

    Je vais déjà commencer tout doucement
    On va déjà essayer de faire la Bdd, se connecter et balancer les infos !
    Ensuite, je vais essayer de faire un test entre 2 clients, histoire de voir.

    Et pour ce qui est de la déconnexion, le temps d'inactivité ne sera pas vraiment approprié! Je m'explique :

    Un client peut très bien être connecté mais pas devant son PC ... Donc il faut pourvoir distinguer l'inactivité de la déconnexion

  13. #13
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    Citation Envoyé par ero-sennin
    Bon, si j'ai 15 contacts de connectés, je devrais créer 15 sockets même si je ne leur parle pas?
    pas forcément. un truc qui peut être pratique dans ce cas de figure, c'est de balancer un paquet UDP...contrairement à TCP tu ne te connectes pas, tu envoies juste un paquet vers le destinataire...l'inconvénient c'est que tu n'as aucune assurance qu'il reçoit le paquet...sauf s'il te renvoie un paquet pour te le dire (laquelle confirmation n'est pas assuré d'arriver )

    Citation Envoyé par ero-sennin
    Et pour ce qui est de la déconnexion, comment puis-je en être averti ? Un déconnexion non prévu par exemple ...
    et TCP, la connexion est coupée, ton socket reçois une erreur, en UDP, il faudrait renvoyer périodiquement un paquet "hello" pour voir si le client est toujours là.

    ceci dit, il me semble avoir vu sur sourceforge un client MSN sous Delphi
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  14. #14
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Je ne vois pas en quoi 15 (meme 100) sokets ouverts en simultané est genant.

    Imaginons que tu pase par une version classique Client/Server, dans laquelle chaque client se connecte via un seul soket au server et dialogue avec lui.

    Le serveur doit bien ouvrir un Socket par Client .... et a mon avis il heberge bien plus de 15 voir 100 Client !!

    D'autant que les sokets ouverts sont ceux des "amis" connectés.
    Et il n'y en a pas tant que ca .....
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  15. #15
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    As-tu envisagé l'utilisation d'IRC ?
    De retour parmis vous après 10 ans!!

  16. #16
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    L'utilisation d'IRC, non pas vraiment!

    Je ne cherche pas à pouvoir me connecter sur MSN, mais juste à créer un tchat personnel afin de me faire les dents sur les composants et d'approfondir mes connaissances ...

  17. #17
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    IRC C'est bien ... mais pas le meme principe que Msn.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  18. #18
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Me revoilà à travers ce post !

    Bon, ba tout d'abors, j'ai pas beaucoup avancé ...
    Je vais déjà avancer par étape et je suis déjà bloqué à la première, c'est à dire, la communication entre le client et le serveur. Pour info, j'utilise les composant ICS et bien que j'ai regardé un peu les sources des exemples, je ne parviens pas à mes fins.

    Je vais vous poster 2 codes, l'un, du coté client et l'autre du coté serveur afin que vous puissiez me dire ce que je fais de travers

    Tout d'abord, le code coté 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
    procedure TForm1.BtnConnexionClick(Sender: TObject);
    begin
     SocketClient.Connect;
    end;
     
    procedure TForm1.BtnDeconnexionClick(Sender: TObject);
    begin
      SocketClient.Close;
    end;
     
    procedure TForm1.BtnEnvoieMessageClick(Sender: TObject);
    begin
      SocketClient.SendStr(SocketClient.SocksUsercode+'a dit : '+MessageAEnvoyer.Text);
    end;
    Du coté 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
    var
      Form1: TForm1;
      serveurClient:TWSocketServer;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.SocketServeurClientConnect(Sender: TObject;
      Client: TWSocketClient; Error: Word);
    begin
      //Je ne sais pas si la ligne si dessous est utile ...
      //Il faut bien que je crées un socketServeur pour chaque client connecté...
      //serveurClient:=TWSocketServer.Create(SocketServeur);
      Memo1.Lines.Add(Client.SocksUsercode+' vient de se connecter');
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      SocketServeur.Connect;
      SocketServeur.Listen;
    end;
     
    procedure TForm1.SocketServeurClientDisconnect(Sender: TObject;
      Client: TWSocketClient; Error: Word);
    begin
      Memo1.Lines.Add(Client.SocksUsercode 'vient de se déconnecter');
    end;
     
    procedure TForm1.SocketServeurDataAvailable(Sender: TObject;
      ErrCode: Word);
    begin
      Memo1.Text:=SocketServeur.ReceiveStr;
    end;
    Voilà, je ne sais pas trop ce qui ne fonctionne pas
    Lors de la connexion et déconnexion, pas de soucis, mais pour ce qui est de l'envoie d'un message ... je bloque !

    J'aimerai juste, dans un premier temps envoyer un message au serveur, ce dernier l'affichant dans un memo et ensuite, envoie au client qui vient de lui envoyé ce message une petite phrase pour dire que tout est OK.

    Je suppose que c'est un problème qui parait bateau mais là, j'avoue ne pas m'en sortir

    Merci d'avance

    PS: Petite question supplémentaire temps que j'y suis, pour affecter un client à un serveur comment on fait ?
    Car j'ai bien le create mais je ne sais pas comment dire au programme "Toi,Serveur2 tu vas t'occuper des messages du client 2"...

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 210
    Points : 84
    Points
    84
    Par défaut
    si deux clients se connectent exactement en meme temps, lequel va signaler a l'autre sa connexion?

  20. #20
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    as tu regarder sur ics les application utilisateur
    il existe un mini Tchat ce qui pourrait te mettre sur la voix

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

Discussions similaires

  1. Réponses: 21
    Dernier message: 30/04/2014, 19h17
  2. Réponses: 2
    Dernier message: 30/07/2009, 12h45
  3. Comment feriez-vous? conception d' une base de données.
    Par Patrick25300 dans le forum Schéma
    Réponses: 4
    Dernier message: 05/05/2008, 18h41
  4. [SQL] Comment feriez-vous cette requête pour une recherche ?
    Par Core8 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/02/2008, 11h58
  5. [Debug] Comment feriez-vous ?
    Par mandaillou dans le forum C++
    Réponses: 4
    Dernier message: 21/03/2007, 17h07

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