Socket

cs_KiNdErMaXi Messages postés 1052 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 30 novembre 2009 - 4 mars 2005 à 16:52
MaX_62 Messages postés 879 Date d'inscription vendredi 22 octobre 2004 Statut Membre Dernière intervention 29 juin 2007 - 6 mars 2005 à 07:42
on m'a parler (il se reconnaitera) d'une technique pour faire un jeu en temps reel
il s'agit d'utiliser des socket j'aurai voulu avoir plus d'informations sur ce sujet si c'est possible
merci d'avance :o)

11 réponses

MaX_62 Messages postés 879 Date d'inscription vendredi 22 octobre 2004 Statut Membre Dernière intervention 29 juin 2007
4 mars 2005 à 17:29
Tu t'adresses a tout le monde ou a qqn de précis ??
Si c'est pour tout le monde explique un peu...

Sinon pour faire un jeu, ya rien de sorcier tu connectes un socket sur le server irc et tu recupéres les evenements classiques (text, join, part, etc..) a l'aide de l'évenement SOCKREAD

Have fun
0
cs_KiNdErMaXi Messages postés 1052 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 30 novembre 2009 2
4 mars 2005 à 17:33
mais non
pas un jeu ou tu en fais profiter tout le monde un jeu perso quoi mais un truc qui va vite :x
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
4 mars 2005 à 19:01
Bonsoir,

Il me semble que c'est moi qui t'avait parlé de cela KiNdErMaXi ?
Pour réagir sur se que MaX_62 a dit, je trouve cela bête d'utiliser un socket alors que tu fais passer celui-ci par le serveur IRC. Autant faire une vraie connexion client(addon)>serveur(addon) non ? Dans ce cas, aucune connexion à IRC est nécéssaire.

Pour en revenir à ta question KiNdErMaXi, il te faudra faire 2 addons :
- le serveur, lui faisant un /socklisten (ouverture et mise en écoute d'un port du PC) afin d'y recevoir et gèrer les connexions des clients
- le client, qui se connecte au serveur et se charge d'envoyer des données et de répondre aux 'demandes' du serveur

Pour le serveur, tu auras besoin de l'événement SOCKLISTEN, (éventuellement SOCKOPEN) et SOCKREAD, et pour le client, en grande partie SOCKREAD

Je pense que le coding du client ne devrait pas de poser de problème (c'est un client comme un autre après tout, il doit juste réagir en fonction de ton serveur que tu coderas en parallèle)
Pour le serveur, tu peux jetter un oeil à mon code suivant :
http://www.ircfr.com/code.aspx?ID=20916
C'est la base d'un simple serveur (il accepte les clients, affiche les données reçues et permet l'envoie de requete manuelle), à toi de tester, de le comprendre, et de le continuer.



<HR>
Cordialement, Sorn_Drixer (Admin CodeS-SourceS)
0
cs_KiNdErMaXi Messages postés 1052 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 30 novembre 2009 2
4 mars 2005 à 19:23
je confirme sorn c'est bien toi
je dirai que le serveur c'est pas grand chose et facile avec ton addon
mais bon une fois le serveur en route je ne vois pas trop comment le "coder"
est-ce que je code comme un mirc ??
merci en tout cas j'ai déja fais un pas en avant
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MaX_62 Messages postés 879 Date d'inscription vendredi 22 octobre 2004 Statut Membre Dernière intervention 29 juin 2007
4 mars 2005 à 19:23
Ah je pensais qu'il s'agissait d'une connexion a un server IRC. Intéressant comme idée !!
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
4 mars 2005 à 20:52
Pour gèrer la communication client<=>serveur, tu vas devoir travailler 99% du temps sur l'événement SOCKREAD. Après, tout dépend comment tu comptes organiser tes données, le système de base serait par exemple :


RAW informations


Pour un système d'identification au serveur, tu peux imaginer que le client envoie au serveur "PSEUDO le_pseudo"


Ensuite côté serveur, on vérifie quel raw a été envoyé (le 1er mot recu dans nos données dans notre cas), $gettok(la chaine,1,32), ou tout simplement $1 si tu as pensé à appliquer un /tokenize 32 chaine au début de ton sockread


Ca peut donner par exemple :


if ($1 == PSEUDO) {
if ($readini(serveur.ini,pseudo,$2)) { sockwrite -n $sockname Ce pseudo existe }
else { sockwrite -n $sockname Ce pseudo n'existe pas }
}

(Code à incorporer dans le sockread du serveur)
C'est un exemple parmis tant d'autre, dans celui-ci on vérifie que le raw envoyé est PSEUDO, ensuite on regarde dans serveur.ini section pseudo si on trouve l'existance du pseudo spécifié après le raw.
Si celui-ci existe, on éxécute la commande correspondante à notre condition, dans le cas contraire, else est appelé.

Je pense que ce genre de système est le plus simple à mettre en oeuvre, il vaut mieux éviter de faire appel au binaire ou de crypter les données pour l'échange client<=>serveur, ca serait trop un casse-tête pour pas grand chose.



<HR>
Cordialement, Sorn_Drixer (Admin CodeS-SourceS)
0
MaX_62 Messages postés 879 Date d'inscription vendredi 22 octobre 2004 Statut Membre Dernière intervention 29 juin 2007
5 mars 2005 à 07:52
J'avais jamais pensé a ce truc mais ça m'a l'air bien sympa, je vais y réfléchir
0
cs_KiNdErMaXi Messages postés 1052 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 30 novembre 2009 2
5 mars 2005 à 13:46
si je résume sorn,
- je créé un serveur (jusque la pas de problèmes :p)
- je connecte un socket a ce meme serveur
- et je fais marcher le machin a l'aide de sockread
c'est ca ?
0
cs_KiNdErMaXi Messages postés 1052 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 30 novembre 2009 2
5 mars 2005 à 13:53
d'ailleurs, le serveur et mon ip non ?
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
5 mars 2005 à 18:14
Concernant le serveur, soit tu comptes l'héberger toi-même et donc il n'y aura qu'un seul serveur de jeu pour les joueurs, soit tu le distribues. Ainsi, tu permettras à nimporte qui de créer son propre serveur. (c'est d'ailleur la meilleure solution, à moins d'avoir une très grosse machine et très grosse connexion sous la main pour faire un unique serveur)

Lorsque tu codes et teste ton addon, oui tu te connectes à toi même, plus précisemment à 127.0.0.1 (localhost)



<HR>
Cordialement, Sorn_Drixer (Admin CodeS-SourceS)
0
MaX_62 Messages postés 879 Date d'inscription vendredi 22 octobre 2004 Statut Membre Dernière intervention 29 juin 2007
6 mars 2005 à 07:42
mais lorsque tu te connectes a 127.0.0.1 il faut prendre le même port que celuik que tu as libéré a l'ouverture du server sinon tu auras :

[07:43:16] * Unable to connect to server (Connection refused)

puisque le port n'est pas ouvert
0
Rejoignez-nous