(Ayuda) Winsock - Cliente / Servidor - Peticion de estado >Online \ Offline<

Iniciado por Brian1511, 16 Diciembre 2012, 14:57 PM

0 Miembros y 1 Visitante están viendo este tema.

Brian1511

Hola a todos como estan bueno anteriormente ise un post de como hacer un multipuertos o algo haci que era para un chat que tengo , la cual que agregue un pedidor de estado por ejemplo

Abro el Servidor lo pongo online.

Abro el Cliente y automaticamente si el servidor esta onli pues este estara online ahora bien si cierro el servidor se me pone offline el cliente y si pongo el servidor desconectado pues l cliente igual se pone offline..

Pra serles un poco mas claros aqui un par de imagenes:

Aqui automaticamente el servidor inicia el Cliente estara online!



Como pueden ver aqui pues Abro lo que es el cliente y pues me inicia Online:




Pero como pueden ver aqui si cierro la conexión osea el servidor pues los 2 estaran Offline.




Aqui vuelvo y abro la conecciondel servidor.



Aqui preciono en conectar al servidor en el form del Cliente.






Entonces aqui la gran duda mi gran problema y es que cuando voy a iniciar otro cliente pues no me conecta al servidor , ya me han dicho que sera por que el servidor esta mandando datos al cliente 1 y por eso esta ocupado y el cliente 2 no puede estar online tanbien, aqui una imagen :




Y este son los code que utiliso:


Este es para el Cliente :



Dim numElementos As Integer 'numero de sockets

Dim i As Integer 'contador

Private Sub Command1_Click()
Winsock1.Close

Winsock1.RemoteHost = "127.0.0.1"

Winsock1.RemotePort = "1000"

Winsock1.Connect


End If



End Sub

Private Sub Form_Load()


Winsock1.Close

Winsock1.RemoteHost = "127.0.0.1"

Winsock1.RemotePort = "1000"

Winsock1.Connect
End Sub



Private Sub Timer1_Timer()


If Estado.Caption = "Online" Then

Frame1.Visible = True

Timer1.Enabled = False

Timer2.Enabled = True

End If



If Estado.Caption = "Offline" Then

Frame1.Visible = False

End If



End Sub

Private Sub Timer2_Timer()

If Label1.Visible = True Then
Label1.Visible = False
ElseIf Label1.Visible = False Then
Label1.Visible = True
End If


End Sub

Private Sub Winsock1_Close()
Estado.Caption = "Offline"
Estado.ForeColor = &HFF&
Command1.Enabled = True
Timer1.Enabled = True
End Sub

Private Sub Winsock1_Connect()
Timer1.Enabled = True
Estado.Caption = "Online"
Estado.ForeColor = &HC000&
Command1.Enabled = False
Dim ac As String

ac = Winsock1.LocalIP

Winsock1.SendData ac


End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

'cerramos previamente el socket

Winsock1.Close

'aceptamos la conexion

Winsock1.Accept requestID

'desplegamos un mensaje en la ventana



End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim ac As String

ac = Winsock1.LocalIP

Winsock1.SendData ac

End Sub

Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Timer1.Enabled = True
Estado.Caption = "Offline"
Estado.ForeColor = &HFF&
Command1.Enabled = True
End Sub



















Para el Servidor :



Dim ac As String



Private Sub Command1_Click()

If Label1.Caption = "Online" Then

Me.Command1.Caption = "Abrir Servidor"

Winsock1.Close

Label1.Caption = "Offline"

Label1.ForeColor = &HFF&

state.Caption = "No hay ninguna conexión."

ElseIf Label1.Caption = "Offline" Then

Me.Command1.Caption = "Cerrar Servidor"

Winsock1.Close

Winsock1.LocalPort = "1000"

Winsock1.Listen

Label1.Caption = "Online"

Label1.ForeColor = &HC000&

End If
End Sub

Private Sub Form_Load()

'cerramos cualquier conexion previa

Winsock1.Close

'asignamos el puerto local que abriremos

Winsock1.LocalPort = "1000"

'deja el socket esuchando conexiones

Winsock1.Listen

Label1.Caption = "Online"

Label1.ForeColor = &HC000&
End Sub

Private Sub Winsock1_Connect()

state.Caption = "Obteniendo Datos..."

End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

'cerramos previamente el socket

Winsock1.Close

'aceptamos la conexion

Winsock1.Accept requestID




End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Winsock1.GetData ac, vbString

state.Caption = ac & " Se ha conectado."

End Sub

Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)

Winsock1.Close

state.Caption = "No hay ninguna conexión."

End Sub


Bueno si pueden ayudarme espero que lo puedan hacer , esto es todo lo que les puedo brindar para que me ayuden este es todo el code de el "Cliente" y el "Servidor".







Creador de BrainMind