• Jueves 2 de Mayo de 2024, 23:46

Autor Tema:  Problema Con Socket  (Leído 1231 veces)

mensagero

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Problema Con Socket
« en: Jueves 28 de Abril de 2005, 10:03 »
0
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" @@@  :blink:
                Clientes.Remove(IDCliente)
            End SyncLock
        End Try

    End Sub

GRACIAS