Utilisateur anonyme
-
Modifié par Alien41 le 7/10/2011 à 21:06
Bonjour, je reviens du langage python et ça fait longtemps que je n'est pas fait du VB.NET
J'essai de faire un server multi client en .NET puis je le test avec un client en python :
Je ne sais pas si c'est bien de faire ainsi mais voici le début de mon serveur, Le problème est que des que le client se connecte et envoi un message, le programme se ferme sans même de message d'erreur :
Imports System.Text
Imports System.Net
Imports System.Net.Sockets
Public Class Form1
Public Sck As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Public Connexion As New List(Of Socket)
Public buff(1024) As Byte
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Sck.Bind(New IPEndPoint(IPAddress.Parse("192.168.0.4"), 256))
Sck.Listen(1)
CreationSocket()
End Sub
Private Sub CreationSocket()
Connexion.Add(Sck)
Connexion(Connexion.Count - 1).BeginAccept(AddressOf AccepteConnexion, Sck)
End Sub
Private Sub AccepteConnexion(ByVal asyncResult As IAsyncResult)
Connexion(Connexion.Count - 1) = Connexion(Connexion.Count - 1).EndAccept(asyncResult)
CreationSocket()
End Sub
Private Sub MessageRecu(ByVal asyncResult As IAsyncResult)
For i As Integer = 0 To Connexion.Count
Dim recu As Integer = Connexion(i).EndReceive(asyncResult)
If recu <> "" Then
Chat.Text = Chat.Text & vbCrLf & Encoding.ASCII.GetString(buff)
End If
Next i
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Try
For i As Integer = 0 To Connexion.Count
Connexion(i).BeginReceive(buff, 0, buff.Length, SocketFlags.None, AddressOf MessageRecu, Connexion(i))
Next i
Catch
End Try
End Sub
End Class
Une personne a une idée ?
Pareil si je veut informé en inscrivant dans le textbox "Chat" VB.net me parle de Thread (je sais se que c'est) et ne veut rien inscrire...