Hola:
Tengo un problemilla al establecer conexiones con equipos remotos. Resulta que se me conecta bien, pero cuando desconecto un cliente no se me cierra el programa. Supongo que será porque no cierro el thread. Aqui les dejo algo d codigo a ver si encuentran algo mal:
CODIGO DEL SERVIDOR
Private Sub LeerSocket()
Dim IDReal As Net.IPEndPoint 'ID del cliente que se va a escuchar
Dim Recibir() As Byte 'Array utilizado para recibir los datos que llegan
Dim InfoClienteActual As InfoDeUnCliente 'Informacion del cliente que se va escuchar
Dim Ret As Integer = 0
IDReal = IDClienteActual
InfoClienteActual = Clientes(IDReal)
With InfoClienteActual
While True
If .Socket.Connected Then
Recibir = New Byte(100) {}
Try
'Me quedo esperando a que llegue un mensaje desde el cliente
Ret = .Socket.Receive(Recibir, Recibir.Length, SocketFlags.None)
If Ret > 0 Then
'Guardo el mensaje recibido
.UltimosDatosRecibidos = Encoding.ASCII.GetString(Recibir)
Clientes(IDReal) = InfoClienteActual
'Genero el evento de la recepcion del mensaje
RaiseEvent DatosRecibidos(IDReal)
Else
'Genero el evento de la finalizacion de la conexion
RaiseEvent ConexionTerminada(IDReal)
Exit While
End If
Catch e As Exception
If Not .Socket.Connected Then
'Genero el evento de la finalizacion de la conexion
RaiseEvent ConexionTerminada(IDReal)
Exit While
End If
End Try
End If
End While
Call CerrarThread(IDReal)
End With
Public Sub CerrarThread(ByVal IDCliente As Net.IPEndPoint)
Dim InfoClienteActual As InfoDeUnCliente
'Cierro el thread que se encargaba de escuchar al cliente especificado
InfoClienteActual = Clientes(IDCliente)
Try
InfoClienteActual.Thread.Abort()
Catch e As Exception
SyncLock Me
'Elimino el cliente del HashArray que guarda la informacion de los clientes
@@@ Aqui me da un menaje de erro "Subproceso anulado" @@@
Clientes.Remove(IDCliente)
End SyncLock
End Try
End Sub
GRACIAS