Visual Basic - Winsock en tiempo real

Life is soft - evento anual de software empresarial
 
Vista:

Winsock en tiempo real

Publicado por Deiby (7 intervenciones) el 07/05/2006 02:37:41
--------------------------------------------------------------------------------

hola soy Deiby el preguntando algo cosas de xml y winsock en el foro, me surge una duda espero me puedan ayudar... sucede lo siguiente mando una instruccio SQL por winsock para que sea ejecutada en el servidor.. el servidor me regresara un archivo XML con el resultado del query, de regreso al cliente, le pido que me abra el archivo y me dice que no existe... esto sucede por que el VB no ejecuta la llamada a Winsock en tiempo real, espera a que termine todo el SUB o FUNCTION y luego manda la orden a winsock, entonces el servidor no creo el archivo a tiempo, no se si me explique.

1. Cliente se conecta

2. winsock.senddata "select * from tabla* (el servidor crea un query y lo manda al cliente)

3. datagrid= ARCHIVO_CREADO_POR_SERVER

4. Fin sub


el VB no ejecuta el paso 2 hasta que termina todo el sub, COMO LE PUEDO HACER PARA QUE LO EJECUTE Y ASI YA TENGA EL ARCHIVO EN EL CLIENTE.


PD . Actualmente lo estoy manejando por botones, 1. se conecta, otro hace el winsock, y otr tercer botoon lo pone en el datagrid, asi funcioan ala perfeccion PERO AL JUNTARLOS TODO EN UNO NO FUNCIONAN!!... bueno espero me heches la manita... gacias gracias gracias.. bye

'TODO JUNTO NO JALA
Private Sub Command1_Click()
Winsock1.RemoteHost = InputBox("Introduzca host remoto (IP) ", , Winsock1.LocalIP)
Winsock1.RemotePort = 666
Winsock1.Connect
'----------segundo boton
Dim XML As String
Dim DOC As DOMDocument
Dim XMLL As IXMLDOMElement
Dim PETICION As IXMLDOMElement
Dim DATO As IXMLDOMElement
Dim STRXML As Variant

Set DOC = New DOMDocument
Set XMLL = DOC.createElement("XML")
DOC.appendChild XMLL

Set DATO = DOC.createElement("USER")
DATO.Text = "uswer"
XMLL.appendChild DATO

Set DATO = DOC.createElement("PASSWORD")
DATO.Text = "pass"
XMLL.appendChild DATO

Set DATO = DOC.createElement("PETICION")
DATO.Text = "select NOMBRE,TELEFONO from hoteles"
XMLL.appendChild DATO

STRXML = XMLL.Text
Winsock1.SendData InputBox("datos a enviar", , DOC.XML)
'---------tercer boton
Set dtgListaHoteles.DataSource = XML2RS("c:\windows\temp\myxml.xml")
Kill ("c:\windows\temp\myxml.xml")

End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Winsock en tiempo real

Publicado por Esteban (1144 intervenciones) el 08/05/2006 07:04:57
Es en tiempo desincronizado, en realidad una cosa es hacer un send al socket y otra es que la aplicación que recibe devuelva la respuesta, donde debes esperar a la ejecución getdata o algo así.

En ese caso deberías agregar un tipo de identificador a la consulta de modo que cuando regrese puedas verificar de qué trata, si haces eso, tal como lo estás programando es obvio que va a fallar, otra es que coloques un ciclo checkeando en qué momento regresa la respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Winsock en tiempo real

Publicado por Deiby (7 intervenciones) el 08/05/2006 18:16:20
El data arrival del clien si esta programado para hacer lo propio con lo ke reciba por parte del servidor, el problema es que en la linea donde va winsock1.sendadata ...... la ejecuta como si fuera otra linea mas, y se va con la siguiente y asi hasta acabar todo el sub, al terminar el sub, es cuando manda los datos al servidor (osea que ejecuta el winsock1.senddata) kiero ke ejecute el sendadata cuando lo encuentre no al final del sub. se podra?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar