Gestion d'un rézo (TCP/IP ou IPX/SPX ...) [VB6] - Programmation
Marsh Posté le 12-01-2001 à 13:21:37
Je ne sais pas quelle envergure tu veux donner à ton jeu, mais le controle OCX Winsock permet de faire communiquer deux ordis sous VB (sans directX).
Marsh Posté le 13-01-2001 à 15:12:47
Ca peut m'intéresser... Je ne sais pas comment faire et je pensais que la meilleure solution était d'utiliser DiretX mais c'est probablement pas la plus facile... 
Mon but c'est pas de faire un super jeu c'est juste d'en faire quelque chose d'intéressant... et c'est pour ca que je veux l'adapter au rézo...ss
Sylderon tu peux me dire comment on utilise l'OCX Winsock... je connais poa, d'après ce que j'ai cru comprendre, c'est vachement plus facile à faire et pour moi ce sera suffisant...
Marsh Posté le 15-01-2001 à 17:32:18
C'est un ocx du Service Pack 4 de VB6, mais on doit pouvoir le trouver ailleurs. 
Tu l'ajoutes à tes composants, puis tu le poses dans le formulaire principal de ton application. 
Pour plus d'infos je vais t'envoyer un exemple de projet vb que j'ai trouvé sur le net.
Marsh Posté le 15-01-2001 à 20:36:08
L'OCX Winsock est la librairie internet de Windows pour communiquer sur le réseau... 
Donc il est hyper performant, par contre il a un comportement bizarre... En effet quand tu envoie une donnée, il la met dans une file d'attente et du coup parfois tu envoie un gros paquet de données d'un coup, ce qui fait tout sauter ton parseur en face. 
 
Par contre, il est hyper simple d'utilisation... 
 
Je te file l'aide de MSDN library demain. 
 
Pour l'instant, juste un petit bout de code : 
 
Serveur : 
Tu fait ajouter un contrôle OCX et tu balance Winsock dans ton Form. Dans ces proproiétés, tu le modifies de façon à ce que ce soit un tableau d'objet (permet plusieurs clients connectés en même temps) 
 
' Création de la connection 
 
Private Continuer As Boolean 
Private intMax As Long 
 
Private Sub Form_Load() 
ss Continuer = False 
ss intMax = 0 
ss ' Ouverture du port 1001 
ss tcpServer(0).LocalPort = 1001 
ss ' Ecoute du port 
ss tcpServer(0).Listen 
End Sub 
 
' Un client essaye de se connecter 
Private Sub tcpServer_ConnectionRequest(Index As Integer, ByVal requestID As Long) 
ss intMax = intMax + 1 
ss tcpServer(intMax).LocalPort = 0 
ss tcpServer(intMax).Accept requestID 
End Sub 
 
' Réception de données depuis le client 'Index' 
Private Sub tcpServer_DataArrival(Index As Integer, ByVal bytesTotal As Long) 
ssssDim strData As String 
sssstcpServer(Index).GetData strData 
ssssfor i = 0 to ubound(tcpServer) 
ssssssssif i <> index then 
ssssssssssss' On envoie la donnée à tout les clients sauf l'émetteur 
ssssssssssssres = sendData(i, strData) 
ssssssssend if 
ssssnext 
End Sub 
 
Private Sub tcpServer_SendComplete(Index As Integer) 
ssssContinuer = True 
End Sub 
 
Function SendData(Index, strData) 
ssssSendData = 1 
ssssOn Error Resume Next 
ssssContinuer = False 
sssstcpServer(Index).SendData strData 
ssssDo While Not (Continuer Or Err <> 0) 
ssssssssDoEvents 
ssssLoop 
ssssErr.Clear 
ssssOn Error GoTo 0 
End Function 
 
 
Client 
Mettre l'OCX Winsock dans le form, mais le laisser tel quel. 
 
Dim Sent 
 
Private Sub Form_Load() 
sssstcpClient.RemoteHost = "NOM_DU_SERVEUR" 
sssstcpClient.RemotePort = 1001 
sssstcpClient.Connect 
end sub 
 
Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long) 
ssssDim strData As String 
sssstcpClient.GetData strData 
ssss' Tes données sont dans "strData" tu en fais ce que tu veux 
end sub 
 
Private Sub tcpClient_SendComplete() 
ssssSent = True 
End Sub 
 
Function SendData(strData) 
ssssSendData = 1 
ssssOn Error Resume Next 
ssssSent = False 
sssstcpClient.SendData strData 
ssssDo While Not Sent Or Err <> 0 
ssssssssDoEvents 
ssssLoop 
ssssIf Err <> 0 Then 
ssssssssDisplayLine "La connection avec le serveur a été perdue" 
ssssssssSendData = 0 
ssssEnd If 
ssssErr.Clear 
ssssOn Error GoTo 0 
End Function 
 
Cet exemple doit plus ou moins fonctionner. 
strData est non typé. Tu peux mettre ce que tu veux dedans. Je te conseille de mettre des chaînes de caractère, avec des séparateurs d'instruction : 
 
par exemple : "/mot_clé valeur|/mot_clé valeur/mot_clé valeur/mot_clé valeur..." 
Ensuite, tu n'as qu'à faire un parseur dans GetData afin de récupérer les valeurs.
Marsh Posté le 11-01-2001 à 19:58:25
J'ai fait un jeu en VB perso.club-internet.fr/raoust/bantumi.exe c'est une adaptation du jeu "Bantumi" sur Nokia 3310 (ca ressemble à l'awalé pour ceux qui connaissent...) et je voudrais le modifier pour qu'il soit jouable en rézo...
Je pense qu'il faut utiliser DirectX pour le gérer...ss
Si vous pouviez m'aider ce serait vraiment cool parceque je ne sais pas du tout comment faire...