winsock
hola, mi consulta es la siguiente...
Estoy programando con winsocket en visual basic...
Les cuento, me conecto a un servidor telnet y luego le mando algunos comandos por lo que quedo en estado "esperando una respuesta" lo que queria saber es ¿como puedo saber cuando la respusta del servidor haya terminado?... osea yo le mando un comando al servidor y éste me responde, pero como saber en que momento termina de responder? ya que al evento dataarrival del winsock le llega varios pedazos de string antes de que llegue la respuesta entera, me entienden? por que antes de responderle al servidor necesito saber cual entero el mensaje que recibo de éste...
espero que me entiendan
Estoy programando con winsocket en visual basic...
Les cuento, me conecto a un servidor telnet y luego le mando algunos comandos por lo que quedo en estado "esperando una respuesta" lo que queria saber es ¿como puedo saber cuando la respusta del servidor haya terminado?... osea yo le mando un comando al servidor y éste me responde, pero como saber en que momento termina de responder? ya que al evento dataarrival del winsock le llega varios pedazos de string antes de que llegue la respuesta entera, me entienden? por que antes de responderle al servidor necesito saber cual entero el mensaje que recibo de éste...
espero que me entiendan
Yo lo resolvà haciendo que en la respuesta del servidor me venga en las 4 primeras posiciones la longitud total del mensaje o en otras ocaciones también un flag de fin de mensaje, para ello tengo dentro del dataarrival un ciclo mientras la longitud no sea la total me quedo concatenando las respuestas o para el otro caso mientras el flag no sea fin de mensaje sigo leyendo
Suerte
Gabriel
Suerte
Gabriel
hola, gracias por tu respuesta...
pero dime... como sabes cuál es el total? ya que según lo que veo en el evento dataarrival sucede varias veces entregandome diferentes "bytesTotal" cada vez que ocurre...
????
tienes algun ejemplo? pofa
pero dime... como sabes cuál es el total? ya que según lo que veo en el evento dataarrival sucede varias veces entregandome diferentes "bytesTotal" cada vez que ocurre...
????
tienes algun ejemplo? pofa
La longitud total del mensaje te la tiene que informar lo que estes ejecutando del lado del servidor, yo utilizo transacciones de usuarios que contemplan esa condición, si no lo podes hacer solo esperá hasta que el mensaje que recibas este en blanco
"Do While (Len(cRxTemp) <> 0 and Timer < nNow"
esto depende mucho de que es lo que estas recibiendo
Dim cRxTemp as string
Winsock.PeekData (cRxTemp)
nNow = Timer + 10 'Para el control del tiempo de espera.
Do While (Len(cRxTemp) <> Val(Left(cRxTemp, 4)) Or Len(Trim$(Left(cRxTemp, 4))) <> 4) And Timer < nNow
'Aca pone los controles adicionales que necesites
'La concatenación de lo que recibis en cRxTemp osea
sRxTotal = sRxTotal & cRxTemp
Winsock.PeekData (cRxTemp)
Loop
'Para limpiar el buffer
Winsock.PeekData (cRxTemp)
"Do While (Len(cRxTemp) <> 0 and Timer < nNow"
esto depende mucho de que es lo que estas recibiendo
Dim cRxTemp as string
Winsock.PeekData (cRxTemp)
nNow = Timer + 10 'Para el control del tiempo de espera.
Do While (Len(cRxTemp) <> Val(Left(cRxTemp, 4)) Or Len(Trim$(Left(cRxTemp, 4))) <> 4) And Timer < nNow
'Aca pone los controles adicionales que necesites
'La concatenación de lo que recibis en cRxTemp osea
sRxTotal = sRxTotal & cRxTemp
Winsock.PeekData (cRxTemp)
Loop
'Para limpiar el buffer
Winsock.PeekData (cRxTemp)
por fa tengo que presentar un trabajo bastante parecido al de winsock con comandos telnet pero solo logro conectarme y no se como mandar y recibir informacion mediante los comandos telnet.
Me puedes mandar tu trabajo terminado para porder guiarme porque nesecito todo el codigo que tenga disponible.
Mil gracias de antemano
Me puedes mandar tu trabajo terminado para porder guiarme porque nesecito todo el codigo que tenga disponible.
Mil gracias de antemano
