|
Publicité | |||||||||||||||||||||||
|
|
#1 |
|
Membre Confirmé
![]() Date d'inscription: novembre 2006
Localisation: France
Âge: 17
Messages: 260
|
Bonjour à tous
Alors voilà, je suis motivé pour apprendre à me servir de ce controle pour la simple et bonne raison que mes méthodes sont trop limités. D'habitude, pour envoyer/recevoir des données, je fais ça à ma manière (Upload fichier text sur ftp, ou récupération de données sur une page web) et par conséquent, l'appli est sans cesse en actualisation pour télécharger les données, c'est du n'importe quoi. Dans ce topic : http://www.developpez.net/forums/d62...nt-personnage/ j'ai réussi à mettre en mouvement des petits personnages, mais j'aimerai savoir comment faire pour que ca soit visible par tous les utilisateurs, autrement dit, on revient au MMORPG. Comment sauvegardé les déplacements qu'a effectué telle personne avec le personnage par exemple, envoyer les données instantanément, afin que les utilisateurs qui seront à ce moment là "spectateurs" voient les déplacements. Donc voilà, je pense que je laisserai ouvert ce topic un certains temps pour pouvoir bien experimenter la chose, je compte sur votre aide ;p Merci d'avance !! [edit] : Je suis en train d'étudier ce controle, donc si vous avez des conseils ou des precisions à m'apporter, je suis prenneur =D
__________________
Code :
Votre clavier comporte plus de 100 touches, pourquoi utiliser le langage SMS ?
|
|
|
|
|
|
#2 |
|
Membre Confirmé
![]() Date d'inscription: novembre 2006
Localisation: France
Âge: 17
Messages: 260
|
[edit] Autant pour moi, petite erreur de synthèse...^^
__________________
Code :
Votre clavier comporte plus de 100 touches, pourquoi utiliser le langage SMS ?
Dernière modification par Ramdoulou ; 09/11/2008 à 14h32. |
|
|
|
|
|
#3 |
![]() |
bonjour, Ramdoulou ..
tu as bien évidement commencé par lire les tutos : Créer un client mail avec le contrôle Winsock Série de tutoriels consacrée à la programmation réseau bonne étude
__________________
page à bbil : dernières entrées : Débuter en VB6 Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
|
|
|
#4 |
|
Membre Confirmé
![]() Date d'inscription: novembre 2006
Localisation: France
Âge: 17
Messages: 260
|
Je vais étudier tout ça, merci =)
J'ai déjà réussi à effectuer une connexion entre 2 pc (client / server), et à récupérer des données par exemple dans des textbox etc... j'avance lentement, mais surement, merci pour ton aide =)
__________________
Code :
Votre clavier comporte plus de 100 touches, pourquoi utiliser le langage SMS ?
|
|
|
|
|
|
#5 |
|
Membre Confirmé
![]() Date d'inscription: novembre 2006
Localisation: France
Âge: 17
Messages: 260
|
J'ai un petit probleme de synthèse dans le code suivant :
Code :
Private Sub tcpServer_ConnectionRequest _ (Index As Integer, ByVal requestID As Long) If Index = 0 Then intMax = intMax + 1 Load tcpServer(intMax) tcpServer(intMax).LocalPort = 0 tcpServer(intMax).Accept requestID Load txtData(intMax) End If ' Vérifie que le contrôle est fermé. Sinon, ferme ' la connexion en cours avant d'accepter la ' nouvelle. If tcpServer.State <> sckClosed Then _ tcpServer.Close ' Accepte la demande avec le paramètre requestID. tcpServer.Accept requestID End Sub que la déclaration de procédure ne correspond pas à la description de l'évenement ou de la procédure du même nom. Jsuis persuadé que ca concerne"(Index as Integer)" mais pourquoi ? =o
__________________
Code :
Votre clavier comporte plus de 100 touches, pourquoi utiliser le langage SMS ?
|
|
|
|
|
|
#6 |
![]() |
syntaxe pas synthèse;..
C'est qu'ici tcpServer désigne un groupe de contrôle WinSock ..., met la propriété index à 0 de ton contrôle WinSock
__________________
page à bbil : dernières entrées : Débuter en VB6 Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
|
|
|
#7 |
|
Membre Confirmé
![]() Date d'inscription: novembre 2006
Localisation: France
Âge: 17
Messages: 260
|
Oui syntaxe raaah ce mot a du mal à passer ^^
Merci =) Mais maintenant ca me le fait avec Code :
Private Sub tcpServer_DataArrival _ (ByVal bytesTotal As Long) Code :
Private Sub tcpServer_DataArrival _ (ByVal bytesTotal As Long) ' Déclare une variable pour les données reçues. ' Invoque la méthode GetData et paramètre pour ' ces données la propriété Text d'un contrôle ' TextBox nommé txtOutput. Dim strData As String tcpServer.GetData strData txtOutput.Text = strData End Sub
__________________
Code :
Votre clavier comporte plus de 100 touches, pourquoi utiliser le langage SMS ?
|
|
|
|
|
|
#8 |
![]() |
ben la c'est Index qui te manque.. je ne sais pas à partir de quoi tu "étudie" mais cela semble être une gestion de multiple connexion un serveur, avec plusieurs clients.. et pour chaque clients un contrôle WinSock serveur , membre de ton groupe de contrôle..
__________________
page à bbil : dernières entrées : Débuter en VB6 Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
|
|
|
#9 |
|
Membre Confirmé
![]() Date d'inscription: novembre 2006
Localisation: France
Âge: 17
Messages: 260
|
C'est bon c'est résolue, jsuis en train de resoudre d'autres ptits problemes =)
__________________
Code :
Votre clavier comporte plus de 100 touches, pourquoi utiliser le langage SMS ?
Dernière modification par Ramdoulou ; 09/11/2008 à 17h43. |
|
|
|
|
|
#10 |
|
Membre Confirmé
![]() Date d'inscription: novembre 2006
Localisation: France
Âge: 17
Messages: 260
|
Alors enfaite j'ai pas mal de problemes...
Niveau Syntaxe, jcomprend pas trop : "Load txtData(intMax)" et ça me pose un probleme "Procédure ou fonction non définie" Et ensuite, jme suis aperçu que si je supprimais cette ligne, la connexion se faisait, mais sur ce meme pc (où il y a le server), quand je tappe un truc ca marche, si jme met sur un autre pc en meme temps, ca marche aussi, mais si je retourne sur celui la, je tappe un truc et ça efface tout =s Donc vla, si quelqu'un peut me dire ce qui cloche dans mon code ça serait sympa =D Code :
Private intMax As Long Private Sub Form_Load() intMax = 0 tcpServer(0).LocalPort = 1001 tcpServer(0).Listen ' Donne à la propriété LocalPort une valeur ' entière. Puis invoque la méthode Listen. 'tcpServer.LocalPort = 1001 'tcpServer.Listen ' Affiche la feuille client. 'frmClient.Show End Sub Private Sub txtSendData_Change() ' Le contrôle TextBox nommé txtSendData contient ' les données à envoyer. Chaque fois que l'utilisateur entre du ' texte dans le contrôle textbox, la chaîne est envoyée en ' utilisant la méthode SendData. tcpServer(intMax).SendData txtSendData.Text End Sub Private Sub tcpServer_DataArrival _ (Index As Integer, ByVal bytesTotal As Long) ' Déclare une variable pour les données reçues. ' Invoque la méthode GetData et paramètre pour ' ces données la propriété Text d'un contrôle ' TextBox nommé txtOutput. Dim strData As String tcpServer(intMax).GetData strData txtOutput.Text = strData End Sub Private Sub tcpServer_ConnectionRequest _ (Index As Integer, ByVal requestID As Long) If Index = 0 Then intMax = intMax + 1 Load tcpServer(intMax) tcpServer(intMax).LocalPort = 0 tcpServer(intMax).Accept requestID 'Load txtData(intMax) End If ' Vérifie que le contrôle est fermé. Sinon, ferme ' la connexion en cours avant d'accepter la ' nouvelle. 'If tcpServer.State <> sckClosed Then _ 'tcpServer.Close ' Accepte la demande avec le paramètre requestID. 'tcpServer.Accept requestID End Sub
__________________
Code :
Votre clavier comporte plus de 100 touches, pourquoi utiliser le langage SMS ?
|
|
|
|
|
|
#11 |
|
Membre Confirmé
![]() Date d'inscription: novembre 2006
Localisation: France
Âge: 17
Messages: 260
|
Apres avoir effectué quelques tests, jme rend bien compte que ya un ptit soucis dans mon code précédent, car au final c'est toujours un tchat à 2...si ya plus, ben au lieu d'afficher ce que j'ecris, ca efface tout carrement =s
Mais vraiment jcomprend pas ce que signifie : "Load txtData(intMax)" Ca charge quoi ? J'ai essayé de remplacer txtdata par txtsenddata (le nom du textbox du server dans lequel on tappe le texte, mais ca marche pas...
__________________
Code :
Votre clavier comporte plus de 100 touches, pourquoi utiliser le langage SMS ?
|
|
|
|
|
|
#12 |
![]() |
on ne voit pas tout ton code, mais j'ai l'impression que tu gère mal ton index :
dans la procédure évènementielle : Code :
Private Sub tcpServer_DataArrival _ (Index As Integer, ByVal bytesTotal As Long) et avec Code :
tcpServer(intMax).GetData strData
__________________
page à bbil : dernières entrées : Débuter en VB6 Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
|
|
|
#13 |
![]() |
Load txtBox(NumeroTextBox) permet de charger à la volée un nouveau controle du meme type que txtBox, ce nouveau controle héritera de tous les propriétés et les metodes du txtBox que tu as placé sur ta feuille.
Il faut donc au départ, placer un txtBox sur ta feuille et, pour pouvoir en avoir plusieurs, lui donner 0 dans la propriété index. A partir de la là, il est possibe de faire un clone du txtBox a l'aide de la méthode Load . Il faudra aussi donner à la methode load, un numéro d'index qui n'aura pas encore été utilisé. Exemple: Load txtBox(1) créera un nouveau txtBox dont la propriété index sera 1 Si le numéro est dèjà utilisé > boom pour acceder aux propriétés individuelles de ce txtBox, on fera txtBox(1).propriété = valeur Dans ton code tu verra que les procédure événement du txtBox de départ ont un paramètre de plus : Index As Integer. Qunad l'évement se declenche, il suffit de vérifier cet Index pour savoir quel clone à déclenché l'evénement.
__________________
En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés (ALEXANDRE DUMAS) N'hésitez pas à visiter ma page de contributions |
|
|
|
|
#14 |
|
Membre Confirmé
![]() Date d'inscription: novembre 2006
Localisation: France
Âge: 17
Messages: 260
|
Merci beaucoup pour cette explication !
Donc txtData doit correspondre logiquement à quel textbox ? Celui où l'on peut ecrire dedans pour que tous les utilisateurs ayant le client de lancé voient ce qu'il y a d'ecrit ? Ou pour le textbox d'affichage de ce qu'il y a d'ecrit ? Et autre chose, pourquoi "cloner" un textbox sans l'autre, et pourquoi cloner tout simplement ? Pour faire en sorte que plusieurs connexions soient faisables, il devrait y avoir que le Winsock à cloner non ? Suis-je à côté de la plaque, ou sur la bonne voie ? Merci d'avance Bbil : Comment je dois faire alors pour que ca soit le même oO car j'ai beau essayer de créer des variables ayant differentes fonctions, j'obtiens pas de resultat =/
__________________
Code :
Votre clavier comporte plus de 100 touches, pourquoi utiliser le langage SMS ?
|
|
|
|
|
|
#15 | |
![]() |
Citation:
Code :
Et autre chose, pourquoi "cloner" un textbox
__________________
En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés (ALEXANDRE DUMAS) N'hésitez pas à visiter ma page de contributions |
|
|
|
|
|
#16 | |
![]() |
Citation:
__________________
page à bbil : dernières entrées : Débuter en VB6 Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
|
|
|
|
#17 |
|
Membre Confirmé
![]() Date d'inscription: novembre 2006
Localisation: France
Âge: 17
Messages: 260
|
Donc alors, je récapitule.
Voici ma feuille : ![]() Text1 (nommé txtSendData) est le textbox dont les données inscrites dedans vont être récupérées puis affichées dans le client (une application appart) sous un textbox (le client contient les mêmes textbox, donc il est aussi possibles d'ecrire avec le client). Text2 (nommé txtOutput) est le textbox qui affiche les données qui ont été récupérées sous Text1 peu importe sa provenance, du server ou d'un client. L'index est paramétré sur vide pour ces 2 texts. Le controle Winsock a l'index réglé sur 0. Donc si j'ai bien compris, je dois régler l'index de Text1 et Text2 sur 0 et remplacé ensuite la ligne Code :
Load txtData(intMax) Code :
Load txtSendData(intMax) Ensuite, concernant ton dernier message bbil, je dois créer une variable qui stockera la valeur de l'index de DataArrival ? Excusez moi si je suis à côté de la plaque, mais j'essaye vraiment de comprendre avec mes moyens, et jsuis pas exellent, et sur ce coup, jtrouve que c'est un controle pas fastoche à manipuler mais il n'est pas question que je laisse tomber =)
__________________
Code :
Votre clavier comporte plus de 100 touches, pourquoi utiliser le langage SMS ?
|
|
|
|
|
|
#18 |
![]() |
non mon dernier message était juste une interrogation sur la procédure tcpServer_DataArrival, dans ton code, procédure qui à index comme paramètre, mais dans la suite du code (dans cette procédure) tu n'utilise pas comme il serai logique index, mais intmax:
Code :
tcpServer(intMax).GetData strDatatcpServer(intMax).GetData strData
__________________
page à bbil : dernières entrées : Débuter en VB6 Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
|
|
|
#19 |
![]() Date d'inscription: mars 2007
Localisation: Vannes et en mer
Messages: 2 243
|
Si je peux me permettre quelques remarques :
Tu as un controle tcpServer(0). Celui ci ne sert qu'a recevoir les demandes de connexions. Des que tu recois une demande de connexion, tu crees un nouveau tcpServer, d'indice "nombre de tcpServer deja existants + 1" qui sera dedie a communiquer avec le client en question. Tu as egalement 2 textbox, si j'ai bien compris le controle TxtData sert a taper les donnees que tu veux envoyer vers les clients. Sauf erreur de ma part, tu n'as pas precise si tu voulais envoyer les memes donnees a tous les clients ou des donnees independantes en fonction des clients, dans le deuxieme cas, il faudrait creer un nouveau TxtData d'indice "nombre de tcpServer deja existants + 1" egalement. Au passage j'aurais d'ailleurs appele ce controle TxtOut puisque ce sont des donnees qui sortent pour le serveur et je ne mettrais pas l'envoi des donnes dans l'evenement change car a chaque ajout de caractere tu renvois toute la chaine presente. Meme doute pour moi en ce qui concerne l'affichage des donnees recues des clients, tu veux tout afficher dans une seule textbox ou dans une textbox par client ? Pour le nom, je mettrais TxtIn (donnees entrantes vues du serveur) et il faudrait creer des TxtIn indexes la aussi si tu veux un affichage de donnees par client. Petite "astuce", en mode creation, met le nom de tes textbox comme proprietes Text de ces memes TextBox (TxtIn(0)" par exemple, ca permet simplement en regardant la feuille de savoir comment s'appelle tes controles |
|
|
|
|
|
#20 |
|
Membre Confirmé
![]() Date d'inscription: novembre 2006
Localisation: France
Âge: 17
Messages: 260
|
Ah oui j'avais même pas fait attention, merci bien ca marche !
Et concernant Code :
Load txtData(intMax)
__________________
Code :
Votre clavier comporte plus de 100 touches, pourquoi utiliser le langage SMS ?
|
|
|
|
|
|
![]() |
||
Etude, théorie et pratique du controle winsock
|
||
| Outils de la discussion | |
|
|