Hola :p jaja bueno
mm vengo aqui preguntandoles una cosa que como puedo hacer esque miren
mi idea es crear un server y que en ese server se conecten max 10 connections
bueno todo eso ya lo ise :)
lo qe tengo duda y quiero resolver es este
un ejemplo estan 4 Pcs connectados:
1,2,3,4 <- estan conectados al server entonces
1,2,4 <- el 3º se desconecta
y vuelve a entrar o entra otro nuevo (que valor agarraria? 5º o rellenaria el vacio osea que seria el 3º?)
tengo esa duda y pss si incrementa en mi connectionrequest tengo esto
Private Sub sockMain_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If lblConnections.Caption = "10" Then
sServerMsg = Time & " - " & "Cant accept more connections..."
List1.AddItem (sServerMsg)
List1.TopIndex = List1.ListCount - 1
Else
sServerMsg = "Connection request id " & requestID & " from " & sockMain(Index).RemoteHostIP
List1.TopIndex = List1.ListCount - 1
If Index = 0 Then
List1.AddItem (sServerMsg)
sRequestID = requestID
intSockCnt = intSockCnt + 1
lblConnections.Caption = intSockCnt
Load sockMain(intSockCnt)
'Socket(intSockCnt).LocalPort = 7575
sockMain(intSockCnt).Accept requestID
List1.TopIndex = List1.ListCount - 1
End If
End If
End Sub
bueno y quise hacer esto:
Private Sub sockMain_ConnectionRequest(Index As Integer, ByVal requestID As Long)
On Error GoTo Erro
If lblConnections.Caption = "10" Then
sServerMsg = Time & " - " & "Cant accept more connections..."
List1.AddItem (sServerMsg)
List1.TopIndex = List1.ListCount - 1
Else
sServerMsg = "Connection request id " & requestID & " from " & sockMain(Index).RemoteHostIP
List1.TopIndex = List1.ListCount - 1
If Index = 0 Then
List1.AddItem (sServerMsg)
sRequestID = requestID
intSockCnt = intSockCnt + 1
lblConnections.Caption = intSockCnt
Load sockMain(intSockCnt)
'Socket(intSockCnt).LocalPort = 7575
sockMain(intSockCnt).Accept requestID
List1.TopIndex = List1.ListCount - 1
End If
End If
'End If
Exit Sub
Erro:
Dim TryCnt As Integer
For TryCnt = 1 To intSockCnt
If sockMain(TryCnt).State = sckConnected Then
Else
intSockCnt = intSockCnt + 1
lblConnections.Caption = intSockCnt
Load sockMain(TryCnt)
'Socket(intSockCnt).LocalPort = 7575
sockMain(TryCnt).Accept requestID
MsgBox "Encontrado" & TryCnt
End If
Next TryCnt
End Sub
esque sale error ya que si estan 1,2,3,4
y el 3º se sale y vuelve a entrar qeraria tomar el valor de 4
pero ya existe haci qe sale error :p
alguna idea :D?
.
Usa este codigo para volver a ocupar indices que ya estan los sockets desconectados, es decir que si antes tenias 0,1,2,3,4 se deconecta el 2 en la siguiente vez con estas funciones podras volver a ocupar dicho indice sin problemas.
'
' /////////////////////////////////////////////////////////////
' // Autor: BlackZeroX ( Ortega Avila Miguel Angel ) //
' // //
' // Web: http://InfrAngeluX.Sytes.Net/ //
' // //
' // |-> Pueden Distribuir Este Codigo siempre y cuando //
' // no se eliminen los creditos originales de este codigo //
' // No importando que sea modificado/editado o engrandesido //
' // o achicado, si es en base a este codigo es requerido //
' // el agradacimiento al autor. //
' /////////////////////////////////////////////////////////////
'
Option Explicit
Private Enum SockState
sckClosed = 0
sckOpen
sckListening
sckConnectionPending
sckResolvingHost
sckHostResolved
sckConnecting
sckConnected
sckClosing
sckError
End Enum
Public Function IndexSocketCerrado(ByRef Socket As Object) As Integer
Dim Index As Integer
Dim SockSt As SockState
IndexSocketCerrado = -1
For Index = Socket.lbound To Socket.UBound
With Socket(Index)
SockSt = .State
If SockSt = sckClosed Or SockSt = sckListening Or SockSt = sckClosing Then
'If SockSt = sckClosed Or SockSt = sckListening Or SockSt = sckClosing Or SockSt = sckError Then ' // Optativo
IndexSocketCerrado = Index
Exit For
End If
End With
Next
End Function
Public Function AceptarConexion(ByRef Socket As Object, requestid As Long) As Boolean
Dim SocketIndex As Integer
SocketIndex = IndexSocketCerrado(Socket)
If SocketIndex = -1 Then
SocketIndex = Socket.UBound + 1
Load Socket(SocketIndex)
End If
Socket(SocketIndex).CloseSck ' // Poner Close en lugar de CloseSck si se usa el OCX WindSock de M$.
Socket(SocketIndex).Accept requestid
End Function
Ejemplo de uso simple:
' // ---->
' // Donde Socket_In es el socket que aceptara la conexion entrante en el Socket_Conexion
' // Cabe destacar que Socket_In debera ser una matrix de controles
' // ---->
Private Sub Socket_Conexion_ConnectionRequest(Index As Integer, ByVal requestid As Long)
Call AceptarConexion(Socket_In, requestid)
End Sub
CSocketMaster... Con CTL.
http://infrangelux.sytes.net/fileX/?file=/BlackZeroX/Programacion/vb6/CSocketMaster.rar&dir=/BlackZeroX/Programacion/vb6&
Temibles Lunas!¡.