Probleme de fermeture de socket serveur apres un 'beginaccept'
Bonjour,
Alors voila je developpe une petite application client / serveur, en utilisant les socket.
Mon probleme est le suivant :
- je connecte mon serveur et le met en attente d'une connection client
- la un client se connecte, ca declenche mon evenement delegate et je coupe l'attente en faisant EndAccept
- je coupe mon socket serveur en faisant 'Close' -> OK
maintenent si je coupe le socket alors qu'aucun client ne s'est connecter, donc toujours en attente de client la j'ai une erreur...
d'ou ma question : comment mettre fin a l'ecoute du serveur?
j'ai plusieur choses, couper le client, le serveur ... mais rien n'y fait.
mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
Imports System.Net
Imports System.Net.Sockets
Public Class SERVEURclass
Public Event OnServerConnection(ByVal localIP As String, ByVal localPORT As Integer)
Public Event OnServerDisconnection()
Public Event OnServerNewClientConnected(ByVal remoteIP As String, ByVal remotePORT As Integer)
Private serv_SockListen As Socket
Private serv_SockClient As Socket
Private serv_Ip As String
Private serv_Port As Integer
Public Sub New(ByVal IP As String, ByVal PORT As Integer)
serv_Ip = IP
serv_Port = PORT
End Sub
Public Function Connect()
Dim SERVEUR_ep As IPEndPoint
serv_SockListen = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
SERVEUR_ep = New IPEndPoint(IPAddress.Parse(serv_Ip), serv_Port)
serv_SockListen.Bind(SERVEUR_ep)
serv_SockListen.Listen(1)
serv_SockListen.BeginAccept(AddressOf New_Client, serv_SockListen)
'EVENT1
RaiseEvent OnServerConnection(serv_Ip, serv_Port)
SERVEUR_ep = Nothing
End Function
Public Function Disconnect()
'serv_SockListen.Close()
'EVENT2
RaiseEvent OnServerDisconnection()
End Function
Private Function New_Client(ByVal asyncResult As IAsyncResult)
serv_SockClient = serv_SockListen.EndAccept(asyncResult)
'EVENT3
RaiseEvent OnServerNewClientConnected(serv_SockClient.RemoteEndPoint.Serialize.ToString, 10)
End Function
End Class |