Necesito ayuda urgente. ¿Alguien me puede explicar porque no funciona este cliente-servidor. Cada
vez que envio un mensaje de cliente a servidor me da error. Dice algo asi como "No es posible
enviarlo en el estado que está". Y si lo envia no aparece en el txtoutput del servidor
Y segunda pregunta: Para permitir más de una conexión, es decir, que se conecte más de un
cliente, ¿lo estoy haciendo bien, o necesito poner algo más?
Aqui está todo el código
CLIENTE
Private Sub cmdsalir_Click()
Unload Me
End Sub
Private Sub cmdConnect_Click()
If cliente.State <> sckClosed Then cliente.Close
'cliente.Close
cliente.RemoteHost = cliente.LocalIP
cliente.Connect , 40000
MsgBox "El cliente" + cliente.LocalIP + "Ha conectado con" + cliente.RemoteHost
cmdConnect.Enabled = False
End Sub
Private Sub cmdenviar_Click()
If TxtSend.Text <> "" Then
cliente.SendData TxtSend.Text
TxtSend.Text = ""
TxtSend.SetFocus
End If
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
datos = TxtSend.Text
cliente.SendData enviar
Private Sub Form_Load()
'Text1.Text = Data1.Recordset("NICK")
Text2.Text = cliente.LocalIP
Text3.Text = Time
End Sub
///////////////////////////////////////////////////////////////////
SERVIDOR
Dim Estado As String * 1
Dim i As Long
Private Sub cmdescuchar_Click()
Estado = "I"
Form_Activate
MsgBox "El servidor " + servidor(0).LocalHostName + " a la escucha"
End Sub
Private Sub Form_Activate()
i = 0
Select Case Estado
Case "I":
If servidor(0).State <> sckClosed Then servidor(0).Close
servidor(0).Bind 40000
' servidor(0).LocalPort = 40000
servidor(0).Listen
Estado = "L"
'frmclient.Show
'frmlogin.Show
End Select
End Sub
Private Sub Form_Load()
Estado = "I"
Text1.Text = servidor(0).LocalIP
End Sub
Private Sub cmdenviar_Click()
Dim enviar As String
enviar = TxtOutput.Text
servidor(i).SendData TxtOutput.Text
End Sub
Private Sub servidor_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If servidor(i).State <> sckClosed Then servidor(i).Close
For i = 0 To 4
Load servidor(i)
servidor(i).LocalPort = 0
servidor(i).Accept requestID
' Load TxtSendData(i)
End If
Next
End Sub
Private Sub servidor_DataArrival_(ByVal bytesTotal As Long)
Dim datos As String
servidor(i).GetData datos, vbString, bytesTotal
TxtOutput.Text = datos
If TxtOutput.Text <> "" Then
MsgBox "Mensaje recibido del cliente" + servidor(i).RemoteHostIP
servidor(i).SendData ("Mensaje recibido")
TxtOutput.Text = datos
End Sub
///////////////////////////////////////////////////////////////////////////////
CONTRASEÑA
Private Sub cmdaceptar_Click()
If txtlogin.Text = "" Or txtpassword.Text = "" Then
MsgBox "Debe ingresar los datos"
End If
Data1.Recordset.MoveFirst
While Not Data1.Recordset.EOF
If txtlogin.Text = Data1.Recordset("NICK") Then
If txtpassword.Text = Data1.Recordset("PASSWORD") Then
frmclient.Show
frmclient.Caption = "Inciando sesion de: " & Data1.Recordset("NICK")
End If
End If
Data1.Recordset.MoveNext
Wend
MsgBox "No existe ninguna cuenta de usuario relacionada a esos datos, verifique sus datos."
txtlogin.Text = ""
txtpassword.Text = ""
txtlogin.SetFocus
End Sub
Private Sub cmdcancelar_Click()
Unload Me
End Sub
//////////////////////////////////////////////////////////////////////////////
Gracias por la ayuda