VB/VB.Net Quelques questions...

Inscrit
13 Septembre 2011
Messages
37
Reactions
0
#1
Bonjour/bonsoir ! Je débute dans l'utilisation des sockets et j'aurais quelques petites questions à vous poser :

J'ai récupérer les sources d'Overedge (Merci beaucoup à toi, je n'ai pas pus te remercier sur ton post car je n'arrive pas à y répondre :s) et j'ai quelques petits problèmes avec :

- Voici mon bouton "déconnecter":

Code:
        Button2.Visible = False
        Button1.Visible = True
        Button1.Enabled = True
        Ecoute_Connexion_thread.Abort()
        Ecoute_Jeu_thread.Abort()
        _socket_Connexion.Dispose()
        _socket_Jeu.Dispose()
Lorsque je me connecte, tout fonctionne bien, je me déconnecte, tout fonctionne bien également mais si je veux me reconnecter, voici mon erreur :

Code:
************** Texte de l'exception **************
System.ObjectDisposedException: Impossible d'accéder à un objet supprimé.
Nom de l'objet : 'System.Net.Sockets.Socket'.
   à System.Net.Sockets.Socket.Connect(String host, Int32 port)
   à WindowsApplication1.Form1.Button1_Click(Object sender, EventArgs e) dans C:\Users\Diabolow\Documents\Visual Studio 2010\Projects\Overedge\Overedge\Form1.vb:ligne 298
   à System.Windows.Forms.Control.OnClick(EventArgs e)
   à System.Windows.Forms.Button.OnClick(EventArgs e)
   à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   à System.Windows.Forms.Control.WndProc(Message& m)
   à System.Windows.Forms.ButtonBase.WndProc(Message& m)
   à System.Windows.Forms.Button.WndProc(Message& m)
   à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   à System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

- Ensuite j'aimerais savoir : si je veux, par exemple, afficher les coordonnées de la map (pas 12345 mais (23,23)), si j'ai bien compris, je dois trouver le packet qui peut me le renseigner (220 il me semble?)?

- Et enfin, vous allez surement me prendre pour un noob avec cette question, mais par exemple si je prend:

Code:
ID_Message.keymovements
lorsque j'écrit "keymovements" vbexpress ne me dit pas si keymovements existe (donc je n'ai aucune aide de vbexpress pour savoir si c'est la bonne orthographe et si ça existe) donc dois-je ajouter une bibliothèque ou quelque chose dans le genre?



Voila merci pour les futures réponses et j'espère avoir posé clairement mes questions ^^'




Ps: Ah oui, j'oubliais, où faut-il se présenter? Je n'ai pas trouvé le forum qui permet de faire cela :s
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#2
Je suppose que tu as la base d'Overdege (Ou ToOnS comme je préfère dire :p)
Donc ici le problème c'est que tu crée un socket à l'apparition de la form, et non quand tu souhaites te connecter.
[EN CE MOMENT]
-Tu lances la form
=>Création des Socket/Thread
-Tu te deconnectes
=> Suppression des Socket/Thread
-tu tentes de te reconnecter
=>Socket supprimé (Donc erreur car tu peux pas te servir de quelque chose supprimé, logique)
[/EN CE MOMENT]

Bref, voilà comment tu dois faire
[COMMENT TU DOIS FAIRE]
-Tu lances la form
-Tu te connectes (en appuyant sur le bouton de connexion)
=> Création des Socket/Thread
-Tu te déconnecte(en appuyant sur le bouton de déco)
=> Suppresion des Socket/Thread
-Tu te reconnectes(en ré appuyant sur le bouton de connexion)
=> Création de nouveau Socket/Thread (vu que tu as supprimé les anciens, il faut les recréer)
[/COMMENT TU DOIS FAIRE]

J'essaie d'aider sans donner de code tout fait, que tu comprennes ce qui ne va pas !
 
Inscrit
13 Septembre 2011
Messages
37
Reactions
0
#3
Wouaw ça c'est du rapide ^^ Merci beaucoup, je vais essayer :)
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#4
évite de kill les socket de connexion même le socket jeu c'est surtout c'est thread qui a besoin d'être déconnecter.
donc essaye que de déconnecter les thread plein de poste sur se forum parle de cette fameuse reconnections cherche bien tu trouvera.
 
Inscrit
13 Septembre 2011
Messages
37
Reactions
0
#5
Bingo j'ai trouvé merci à vous deux de m'avoir aidé :)
 
Inscrit
13 Septembre 2011
Messages
37
Reactions
0
#7
Bouton connexion :

Code:
   Private Sub SeConnecterToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SeConnecterToolStripMenuItem.Click
        SeConnecterToolStripMenuItem.Enabled = False
        SeDéconnecterToolStripMenuItem.Enabled = True
        _socket_Connexion = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) ' on prepare la socket
        Ecoute_Connexion_thread = New Thread(New ThreadStart(AddressOf Ecoute_Connexion)) ' on prepare le thread pour recevoire
        _socket_Connexion.Connect("213.248.126.180", 5555) ' on se connecte
        Ecoute_Connexion_thread.Start() ' on demarre le thread pour recevoire
        ' ici peu etre mettre une pause de 1 sec si _socket est encore connecté (faut voire)
        While Ecoute_Connexion_thread.IsAlive
            Application.DoEvents()
        End While
        Ecoute_Jeu_thread = New Thread(New ThreadStart(AddressOf Ecoute_Jeu)) ' on prepare le thread pour recevoire
        _socket_Jeu = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) ' on prepare la socket
        _socket_Jeu.Connect(ip, 5555) ' on se connecte au serveur de jeu
        Ecoute_Jeu_thread.Start() ' on demarre le thread pour recevoire avec le serveur de jeu
    End Sub

Bouton déconnexion :

Code:
        SeDéconnecterToolStripMenuItem.Enabled = False
        SeConnecterToolStripMenuItem.Enabled = True
        Ecoute_Jeu_thread.Abort()
        _socket_Jeu.Shutdown(SocketShutdown.Both)
        _socket_Jeu.Disconnect(1)
 
Haut Bas