winsock

Valdivia
04 de Diciembre del 2004
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

Gabriel
04 de Diciembre del 2004
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

valdivia
04 de Diciembre del 2004
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

gabriel
04 de Diciembre del 2004
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)

miguel79
04 de Diciembre del 2004
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