Problema de cerrar conexión winsock

Estoy haciendo un programa cliente y otro servidor, quiero que cuando arranque el cliente quede registrado en el servidor la hora de entrada y cuando termina el programa se registre la hora de salida.
En el cliente tengo esto:
Winsock1.RemoteHost = "servidor" Winsock1.RemotePort = 1007
Winsock1. Connect
Y en el servidor esto:
If index = 0 Then
List1.AddItem (sServerMsg)
sRequestID = requestID
iSockets = iSockets + 1
lblconexion.Caption = iSockets
Load conector(iSockets)
conector(iSockets).LocalPort = 1007
conector(iSockets).Accept requestID
End If
Select Case conector(0).RemoteHostIP
Case Is = "10.0.0.4"
Image1(0).Visible = True
Label5(0).Caption = "Entrada " & Time
Label5(0).Visible = True
Label6(0).Caption = ""
Case Is = "10.0.0.2"
Image1(1).Visible = True
Label5(1).Caption = "Entrada " & Time
Label5(1).Visible = True
Label6(1).Caption = ""
Y para cerrar tengo esto:
List1. AddItem (sServerMsg)
' Conector(index). Close
' Unload conector(index)
'Unload conector(iSockets)
' iSockets = iSockets - 1
'lblconexion.Caption = iSockets
'Select Case conector(0).RemoteHostIP
'Case Is = "10.0.0.4"
' Image1(0).Visible = False
' Label6(0).Caption = "salida " & Time
' Label6(0).Visible = True
'Case Is = "10.0.0.2"
' Image1(1).Visible = False
' Label6(1).Caption = "salida " & Time
' Label6(1).Visible = True
'Case Is = "10.0.0.1"
El problema es que cuando abro y cierro el programa más de una vez me sale el mensaje de que el objeto ya esta cargado.
Como puedo hacer para que no pase eso, espero haberme explicado pues no soy muy ducho en esto.

1 respuesta

Respuesta
1
Para usar el winsock para app clt-srv yo creo una matriz de ctrl winsock, cosa que cada cliente que se conecta obtiene un socket nuevo. Para hacer lo que vos pedís porhay te puede servir esto:
Option Explicit
Dim varNroCliente As Integer
Dim varIdxCliente As Integer
Private Sub WinSock1_Close(Index As Integer)
If WinSock1(Index).State <> sckClosed Then
WinSock1(Index).Close
List1.RemoveItem varIdxCliente
MsgBox "Cliente retirado a las: " & Format(Now, "HH:MM:SS")
End If
End Sub
Private Sub WinSock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
varNroCliente = varNroCliente + 1
Load WinSock1(varNroCliente)
WinSock1(varNroCliente). Accept requestID
List1.AddItem Format(Now, "HH:MM:SS") & " >>" & WinSock1(varNroCliente). RemoteHostIP, varIdxCliente
End Sub
Suerte
.: Gydba :.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas