Page 1 sur 2
Client/serveur
Publié : mar. 19/sept./2006 10:04
par andrebernard
Bonjour à tous
Je voudrais si l'on peut creer un client/serveur entre 2 machine.
Je m'explique :
J'aimerais que chaque machine qui se connecte sur ce reseau puisse envoyer ET recevoir des données de n'importe quelle autre machine en ecoute en connaissant son IP.
En fait emmeteur / recepteur de datas au choix selon si l'on a besoin d'envoyer une information ou bien de la recevoir.
Merci de votre attention
Publié : mar. 19/sept./2006 11:43
par Oliv
Regarde les exemples dans le répertoire sources de PureBasic, ils expliquent la base de tout ça....
Publié : mar. 19/sept./2006 12:53
par andrebernard
Rebonjour
En fait cela fait pas mal de temps que je cherche.
Je suis arrivé à faire un serveur et un client qui fonctionne tres bien, mais ce que je me demande, c'est si par exemple j'ouvre une session avec un pc pour lui envoyer des donnees et que pendant ce temps la un autre pc se connecte a moi pour m'envoyer des donnees
Je deviens donc client en meme temps que je suis serveur.
Est ce que cela fonctionne t'il ???
Ce que je cherche c'est un code qui permette SIMULTANEMENT d'etre en reception ET en emission, le MEME code que l'on installerais sur TOUTES les machines d'un reseau afin qu'elle puisse echanger des fichiers juste en connaissant l'IP du destinataire, si c'est possible evidemment avec ce merveilleux language qu'est pure.
Merci de vos reponses
Publié : mar. 19/sept./2006 14:53
par bombseb
je ne pense pas que celà dépende du language de programmation mais plutot de ton programme même
je pense que ce que tu cherche à faire doit être largement possible avec PB
Publié : mar. 19/sept./2006 15:23
par Flype
le mieux est d'aller voir du coté des programmes de 'chat.
quelques uns ont déjà développés de tels progs avec purebasic.
les sources doivent être disponibles, ou en demandant à leurs auteurs.
Publié : mar. 19/sept./2006 16:07
par Droopy
ça doit être faisable avec un thread créé à chaque client qui se connecte au module serveur

Publié : mar. 19/sept./2006 21:34
par andrebernard
Bonjour
Je ne suis pas super avancé, mais chaque opinion est bonne a prendre.
Pour droopy si tu sais ou il peut y avoir un code de ce genre, je suis hyperpreneur.
En attendant je vais chercher comme me l'a conseillé flype du coté des chat.
Merci de vos intervention.
Publié : mer. 20/sept./2006 15:36
par andrebernard
Rebonjour
J'ai cherché du coté des CHAT mais je n'ai rien trouvé qui permette de transmettre des donnees et des fichiers comme le fait le network.
J'ai juste trouvé un code allemand (dur dur a lire) qui avec le meme prg est serveur OU client selon le choix que l'on fait au debut, c'est deja bien mais il ne fait pas les deux en meme temps.
Je desespere un peu, peut etre que quelqu'un aura une super idée.
Je continue mes recherches.
Bonne journée
Publié : mer. 20/sept./2006 15:38
par Progi1984
Tu crées deux threads : l'un qui recoit les informations, et l'autre qui les envoies....
Publié : ven. 22/sept./2006 9:51
par Anonyme
je crois avoir plus ou moins compris ta recherche.
Logiquement , un serveur peut aussi envoyer des données, tout comme le client.
Si tu veut que tout le monde communique entre eux, c'est a dire : client a client
Aucune commande ne permet la communication entre le Client A & B ou C etc...
Ce qu'il faut faire, et la, c'est complexe aussi, c'est créer une sorte de protocole de communication entre le client et le serveur, il faut savoir aussi à l'avance , si toutes les données de tous les clients vont passer par le serveur, le nombre de connection sera t'il limité ? ect...
il faut définir à l'avance comment on va procéder.
Pour ma part, moi tout passe par le serveur , un client et un client, un serveur et un serveur, et pas les deux
Le serveur possède une structure ou sont ranger la liste de tout les clients connecter, lors d'une nouvelle connection, le serveur met à jour sa liste , puis il l'envois à tout les clients afin que tout le monde puissent communiqué.
Comme je disait ,tout passe par le serveur, donc si le client A veut parler au C , le client A peut utilisé une sorte de "FLAG" qui dit au serveur que c'est un message pour le Client C , ce flag, peut être un byte placé en debut de chaine, et lorsque le serveur recois l'info il sais ce qu'l doit faire.
Voici un Exemple de message possible du client A
MSG$ = "MGSFOR|C|CECI EST UN MESSAGE POUR LE CLIENT C"
Donc le serveur va recevoir ceci, il va pouvoir recuperer le "flag"
ici , c'est MGSFOR, donc le serveur applique la procedure a suivre
dans ce cas, il sait que la suite du message est la destination "C", puis le message en lui meme.
Je ne ferais pas d'exemple concret, car c'est long est chiant à faire
à++
Publié : ven. 22/sept./2006 10:10
par andrebernard
Bonjour
Merci de ces explications.
En fait c'est pour le travail ou tous les Pc sont reliés, je ne sais comment entre eux et en windows 2000.
On peut acceder facilement à un autre avec par exemple VNC ou bien le network de Pb.
Pour ça, ça marche.
Mais comme je voudrais faire un peu comme un CHAT, avec des transferts de fichiers, le probleme c'est que n'importe qui devrais pouvoir envoyer a n'importe qui rien qu'en ayant son IP si bien sur il est en ecoute evidement
Donc je ne vois pas comment je pourrais decider de quelle machine serait le serveur car si cette machine se trouve eteinte par un des utilisateur qui part en week end, bah Pfffff, plus de megaCHAT.
Quelqu'un m'a parlé d'ouvrir pour chaque machine un client et un serveur en meme temps chacun dans un THREAD.
Je viens donc de me renseigner sur les THREAD pour savoir ce que c'est exactement et d'apres ce que l'on m'a dit ça ne devrait pas poser de bleme:
http://purebasic.forum-gratuit.com/viewtopic.php?t=5645
Qu'en pense tu ???
Je prefere avoir ton avis, car si cela ne marche pas, c'est pas la peine que je galere.
Merci de ton aide
Publié : ven. 22/sept./2006 10:24
par Anonyme
Dans ce cas , il te faut une base de données fixe , disponible tout le temps
Lors d'une connection, le client se connecte à cette base , puis récupère l'ip de tout les utilisateurs connecter à cette base.
Lors de cette connection, ce client créer un serveur (donc il sera client & serveur)
Dans cette base, tu peut stocker pseudo & ip, que tu peut récuperer via des scripts php. Tu n'a plus qu'a lister les pseudo et les ip dans une jolie fenetre.
Maintenant , il faut que tu te renseigne sur la manière de gerer les bases de données via des scripts php.
Ifrance peut te permettre d'avoir une bdd gratos.
Si tu n'y connais rien en php/mysql va sur le site du zero, c'est ce que j'avais fait, j'avais réussi a creer des scripts et un bdd. c'est simple à mettre en place.
Si à ton boulot , il n'y a pas le net, alors essaye une liste logique d'ip :
Tu lances une ouverture de connection sur les ip, si sa marche, il est connecté , sinon, non, ensuite tu refermes la connection , tu passe au suivant.
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
etc...
Si c'est pour un tchat, te prends pas la tête avec des threads.
@++
Publié : ven. 22/sept./2006 18:31
par andrebernard
merci bien de tous ces conseils.
Bonne soiree
Publié : dim. 24/sept./2006 10:49
par djes
Je ne vois vraiment pas où est le problème? Tu as fait des essais? Un serveur peut gérer plusieurs clients, et en recevoir et leur envoyer des données facilement. Tu peux aussi faire qu'un machine soit à la fois cliente et serveur. Tu peux créer plusieurs serveurs sur plusieurs ports, et leur attribuer une fonction particulière (genre un port pour la gestion, un pour l'émission, pour la réception, le chat, etc.).
Publié : dim. 24/sept./2006 11:00
par Kwai chang caine
Bonjour DJES
Je suis super content, enfin quelqu'un qui me remonte le moral....
Donc ce n'est pas si impossible que ce que l'on m'a dit jusqu' a maintenant.
Creerais tu des threads pour chaque serveur, afin qu'il puisse vérifier les connections simultanement, ou bien n'est ce pas necessaire ???
Merci