Morpion en socket [Résolu]

Signaler
Messages postés
6
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
1 novembre 2007
-
Messages postés
6
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
1 novembre 2007
-
Bonjour, 

   Je suis actuellement en BTS d'informatique de gestion et j'ai un morpion à programmer en socket en VB gràce à Visual Basic 2005.
Je suis loin du résultat. ^^

   Je suis pour le moment en train de tester la connexion winsock en local afin de transmettre un X d'un client vers un serveur et de l'afficher dans une TxtCase gràce aux méthodes send et receive de la classe socket. Cependant j'ai un problème que je ne comprend pas. Je peux connecter le client au serveur sans problèmes? Je peux envoyer des données du serveur jusqu'au client sans problèmes (d'après ce que je vois), par contre, je n'arrive pas à recevoir les donnéesdepuis le serveur gràce à méthode receive. Voici mon code

Coté Serveur :

Imports

System
Imports

System.Text
Imports

System.IO
Imports

System.Net
Imports

System.Net.Sockets
Public

Class Form1

Dim socket
As
New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP)

Private
Sub Form1_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Loadsocket.Bind(

New IPEndPoint(IPAddress.Parse(
"127.0.0.1"), 50000))

End
Sub

Private
Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Clicksocket.Listen(5)

socket.Accept()

Recept()

End
Sub

Private
Sub Recept()

Dim Message
As
Byte() = System.Text.Encoding.ASCII.GetBytes(
"")

While socket.Available = 0

Trysocket.Receive(Message)

Catch erreur
As SocketException

End
Try

End
While

End
SubEnd

Class

   -------------------------------------------------------------------------------------------------------------------

Côté client :

Imports

System
Imports

System.Text
Imports

System.IO
Imports

System.Net
Imports

System.Net.Sockets
Public

Class Form1

Dim socket
As
New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP)

Private
Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Clicksocket.Connect(

"127.0.0.1", 50000)

End
Sub

Private
Sub TextBox1_TextClick(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles TextBox1.ClickTextBox1.Text =

"X"Envoi(TextBox1.Text)

End
Sub

Private
Sub Envoi(
ByVal msgtrans
As
String)

Dim Message
As
Byte() = System.Text.Encoding.ASCII.GetBytes(msgtrans)

Trysocket.Send(Message, 0, Message.Length, SocketFlags.None)

Catch erreur
As SocketException

End
Try

End
SubEnd

Class

   ---------------------------------------------------------------------------------------------------------------------------

Voilà, en espérant avoir une réponse très vite de votre part...

A L'AIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIDE!! lol
A voir également:

4 réponses

Messages postés
6
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
1 novembre 2007

Désolé pour l'espacement entre les phrases et le manque d'indentation de mon code c'est mon premier post sur ce site je ne maitrise pas encore tout a fait le traitement de texte. ^^

Merci d'avance pour vos réponses éventuelles.
Messages postés
206
Date d'inscription
lundi 22 novembre 1999
Statut
Membre
Dernière intervention
3 juillet 2008

Oula... pas facile à lire :/
Pis des morpions dans les sockets... fo les poudrer ^^
Bizzare pourtant, ton code me semble correct, tu as bien fait le listen et sur la bonne socket...

Gérôme GUILLEMIN
Auteur du langage FBSL
Messages postés
6
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
1 novembre 2007

Je remet mon code de manière plus lisible afin que ce soit plus compréhensible ^^  :

Coté Serveur :

Imports

System

Imports
System.Text

Imports
System.IO
Imports System.Net

Imports
System.Net.Sockets
Public

Class Form1 
Dim socket AsNew Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP)

PrivateSub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase .Load 
         socket.Bind( New IPEndPoint(IPAddress.Parse( "127.0.0.1" ), 50000))
EndSub

PrivateSub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click   ' bouton connexion  
         socket.Listen(5)
         socket.Accept()
         Recept()
EndSub

PrivateSub Recept() ' Fonction qui permet de recevoir les donées 
         Dim Message AsByte () = System.Text.Encoding.ASCII.GetBytes( "" ) 
         While socket.Available = 0 
         Try  
                  socket.Receive(Message)
         Catch erreur As SocketException 
         EndTry  
         EndWhile
Dim
MsgConv
As
String = System.Text.Encoding.ASCII.GetString(Message)
TextBox1.Text = MsgConv

EndSub End

Class

   -------------------------------------------------------------------------------------------------------------------

Côté client :

Imports System

Imports System.Text

Imports System.IO

Imports System.Net

Imports System.Net.Sockets
Public

Class Form1

Dim socket
As
New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP)

Private
Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click ' bouton connexion  
         socket.Connect(
"127.0.0.1", 50000)

End
Sub

Private
Sub TextBox1_TextClick(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles TextBox1.Click '  Quand on clique sur la case qui aura come valeur "X"
         TextBox1.Text = 
"X" 
         Envoi(TextBox1.Text)

End
Sub

Private
Sub Envoi(
ByVal msgtrans
As
String) '  Fonction qui permet l'envoi des données 

         Dim Message
As
Byte() = System.Text.Encoding.ASCII.GetBytes(msgtrans) 

         Try 
                  socket.Send(Message, 0, Message.Length, SocketFlags.None)

         Catch erreur
As SocketException 

         End
Try

End
Sub
End

Class

--------------------------------------------------------------------------------------------------------------------------

En espérant avoir une réponse rapide de votre part

Merci
Messages postés
6
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
1 novembre 2007

Je remet mon code de manière plus lisible afin que ce soit plus compréhensible ^^  :





Coté Serveur :




Imports



System



Imports
System.Text



Imports
System.IO


Imports
System.Net



Imports
System.Net.Sockets


Public



Class
Form1 


Dim
socket

As



New
Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP)


Private



Sub
Form1_Load(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles



MyBase
.Load 
         socket.Bind(

New
IPEndPoint(IPAddress.Parse(

"127.0.0.1"
), 50000))


End



Sub






Private



Sub
Button1_Click(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles
Button1.Click   ' bouton connexion  
         socket.Listen(5)
         socket.Accept()
         Recept()


End



Sub






Private



Sub
Recept() ' Fonction qui permet de recevoir les donées 


         Dim
Message

As



Byte
() = System.Text.Encoding.ASCII.GetBytes(

""



         While
socket.Available = 0 


         Try
 
                  socket.Receive(Message)


         Catch
erreur

As
SocketException 


         End



Try
 


         End



While





End



Sub
End


Class

   -------------------------------------------------------------------------------------------------------------------

Côté client :

Imports System

Imports System.Text

Imports System.IO

Imports System.Net

Imports System.Net.Sockets
Public

Class Form1

Dim socket
As
New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP)

Private
Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click ' bouton connexion  
         socket.Connect(
"127.0.0.1", 50000)

End
Sub

Private
Sub TextBox1_TextClick(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles TextBox1.Click '  Quand on clique sur la case qui aura come valeur "X"
         TextBox1.Text = 
"X" 
         Envoi(TextBox1.Text)

End
Sub

Private
Sub Envoi(
ByVal msgtrans
As
String) '  Fonction qui permet l'envoi des données 

         Dim Message
As
Byte() = System.Text.Encoding.ASCII.GetBytes(msgtrans) 

         Try 
                  socket.Send(Message, 0, Message.Length, SocketFlags.None)

         Catch erreur
As SocketException 

         End
Try

End
Sub
End

Class

--------------------------------------------------------------------------------------------------------------------------

En espérant avoir une réponse rapide de votre part

Merci