Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problemas con variables en Winsock

Estas en el tema de Problemas con variables en Winsock en el foro de Programación General en Foros del Web. Saludos cordiales, Estoy trabajando en un programa en visual Basic donde uso el control Winsock para transmitir datos a través de una red interna, necesito ...
  #1 (permalink)  
Antiguo 10/01/2003, 17:12
 
Fecha de Ingreso: noviembre-2002
Mensajes: 56
Antigüedad: 22 años
Puntos: 0
Problemas con variables en Winsock

Saludos cordiales,
Estoy trabajando en un programa en visual Basic donde uso el control Winsock para transmitir datos a través de una red interna, necesito enviar tres variables de mi programa Servidor a mi programa cliente, todas las conexiones están correctas pero el problema esta en que cuando envio la variable Setpoint As String esta variable me envia duplicada, es decir cuando envio el valor de 100 como String me llega al cliente como 100 y a la proxima vez que llega se hace 100100, no se porque esta pasando esto, ahora cuando cambio la variable en el Server es decir de 100 a 110, esta debería enviar automáticamente hacía el cliente el valor de 110 pero envia 110110. La solución sería darle un valor Integer a la variable SetPoint, en este caso funciona com debe ser pero con demasiado retardo.
La pregunta es: Hay alguna manera de hacer que mi variable String al llegar a mi cliente no se repita o no se duplique, es decir si envio 100 de mi server que llegue 100 a mi cliente, si envio 90 del server que llegue 90 al cliente, porfavor si alguien conoce la solución le agradecería me lo envíe urgente.
Gracias y hasta pronto.
Macaspi
  #2 (permalink)  
Antiguo 11/01/2003, 05:26
 
Fecha de Ingreso: abril-2002
Mensajes: 438
Antigüedad: 22 años, 7 meses
Puntos: 2
Hola,

¿Puedes por favor poner el código fuente y así tratamos de ayudarte con el WinSock? Ademñás, ¿retardo por enviar 100 como un entero respecto a enviar 100 como un string? ¿Qué tipo de retardo? Suena extrañísimo.

Saludos.
  #3 (permalink)  
Antiguo 13/01/2003, 17:13
 
Fecha de Ingreso: noviembre-2002
Mensajes: 56
Antigüedad: 22 años
Puntos: 0
Codigo Programa Servidor:
Dim SetPoint As Variant
Dim NombreUsuario As String
Private Sub Form_Load()

TxtSetPoint.Text = SetPoint
'************************************************* ************************
'Al cargar el program, lo primero que se debe hacer es capturar el nombre de la PC servidor
'para después enviarselo al cliente.
'************************************************* ************************
'Obtiene el nombre de usuario de la PC Servidor y la almacena en la variable
NombreUsuario = UCase$(Trim$(SockNivel(0).LocalHostName))

'Primero elegimos el puerto a usar para la conexión se recomienda usar un número alto
'porque los mas bajos se usan para servicios de Telnet: 80, FTP:21 , etc.

SockNivel(0).LocalPort = 1000
SockNivel(0).Listen 'Empezamos escuchando alguna conexión por el puerto 1000
FrmPrincipal.StatusBar1.Panels(4) = "Esperando Conexión de un Cliente Remoto"
LblNombServer.Caption = SockNivel(0).LocalHostName
LblServerIP.Caption = SockNivel(0).LocalIP
FrmPrincipal.Toolbar1.Buttons(4).Enabled = False

End Sub

Private Sub SockNivel_ConnectionRequest(index As Integer, ByVal requestID As Long)
SockNivel(0).Close
Mensaje2 = "Conexión de: " & SockNivel(index).RemoteHostIP
If index = 0 Then
LstUsuarios.AddItem (Mensaje2)
SockNivel(0).Accept requestID
Timer2.Enabled = True ‘Habilita el Timer para enviar el dato constantemente
‘cada 100 mseg.
DoEvents
End If
FrmPrincipal.StatusBar1.Panels(4) = "Cliente Remoto Conectado"

End Sub

Private Sub Timer2_Timer()

Call SockNivel(0).SendData(SetPoint) ‘Envia la variable SetPoint al cliente

End Sub


Codigo Programa Cliente

Option Explicit

Dim SetPoint As Integer
Dim Nivel As String

Private Sub CmdConectar_Click()

SockNivel(0).Connect "130.1.40.158", 1000 ‘conectado a la Direccion IP en el ‘ ‘ ‘puerto 1000
DoEvents
Timer1.Enabled = True
Timer1.Interval = Val(LblIntervalo.Caption)
End Sub

Private Sub SockNivel_Close(Index As Integer)

FrmPrincipal.StatusBar1.Panels(4) = "Desconectado del server INTELCOM"
SockNivel(0).Close
End Sub

Private Sub SockNivel_DataArrival(Index As Integer, ByVal bytesTotal As Long)

Call SockNivel(0).GetData(SetPoint)
LblSetPoint.Caption = SetPoint
End Sub

Private Sub Timer1_Timer()

SetPoint = Val(LblSetPoint.Caption)
Nivel = Val(LblNivel.Caption)
CWNivel.Plots("Plot 1").ChartY SetPoint, 1 ‘Grafica el SetPoint
CWNivel.Plots("Plot 2").ChartY Nivel, 1
End Sub




Este es el código tanto para el Servidor como el Cliente, el problema es que cuando recibo el dato en el cliente me sale duplicado es decir de esta manera: (Estoy usando un timer a 100 mseg para enviar los datos)

Si envio 100 la primera vez llega 100, luego llega 100100
Si envio 110 la primera vez llega 110, luego llega 110110

Yo necesito que cada vez que cambie el valor en el servidor, me llegue el mismo valor al cliente.

El retardo al que me refiero es que cuando yo asigno a las variables como Integer, funciona correctamente pero hay una demora (retardo) en el cambio en el cliente, es decir:
Si envio la primera vez 100, al cliente llega 100.
Si cambi a 110, al cliente llega 110 pero se demora como 15 segundos en cambiar el valor.
Si vuelvo a enviar otro valor por ejemeplo 120, el tiempo que se demora en llegar al cliente es el doble es decir 30 segundos, y asi sucesivamente hasta que llega a un tiempo en donde nunca cambia y si cambia es demasiado lento.
Si hay alguien que domine o haya trabajado con este control winsock, por favor le agradecería me ayude urgente. Cualquier sugerencia me pueden escribir al siguiente mail:

[email protected]


Atte,
Macaspi
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:00.