Hola necesito hacer un chat en Fox y tengo el sgte inconvenientes:
Tengo un servidor y varios clientes, cada cliente tiene su propio socket
que lo haga creando un objeto dentro del formulario e insertandolo dentro
de una tabla. Despues de conectarse un cliente, mando una orden se seteo
con el nombre de usuario elegido.
Boton de seteo: - cliente
vlMandar="999*SET"+ALLTRIM(ThisForm.Text2.value)
ThisForm.socket.object.sendData(vlMandar)
IF ThisForm.socket.object.state=7
this.Enabled=.f.
endif
servidor * accion del seteo
vlDatos=""
SELECT crSOCK001A
GO top
SCAN
if crSock001a.sock!=prSock
vlDatos=STR(crSock001a.usuid,3)+"*ALT"+crSock001a.USU
vlLen%5-LEN(vldatos)
vlDatos=vldatos+REPLICATE(" ",vlLen)
thisForm.&vlSockNew..socket.object.sendData(vlDatos)
ThisForm.edtMsg.value=ThisForm.edtMsg.value+vldatos+CHR(13)+CHR(10)
endif
SELECT crSock001a
ENDSCAN
el vlSockNew es el que mando el seteo y le paso la lista de todos los
usuarios conectados(indice y nick) con la operatoria ALT para que el
cliente lo reciba y lo de alta
*** cliente dataarrivar
LPARAMETERS bytestotal
Local vlDatos
vlDatos=""
store replicate(" ",255) to vlDatos
this.object.getData(@vlDatos,,255)
ThisForm.Edit1.value=ThisForm.Edit1.value+;
allTRIM(vldatos)
DO case
case SUBSTR(vldatos,5,3)="ALT"
*** alta de usuario
INSERT INTO crUsu001a
VALUES(.f.,SUBSTR(vldatos,8),VAL(SUBSTR(vldatos,1,3)))
GO top
ThisForm.Grid1.Refresh()
***
El problema que tengo es que el cliente solo lee el primer send, o sea si
tengo 1 y 2 clientes y se conecta 3, 3 recibe unicamente como el ALT del 1
y no de 2, como que el segundo alt queda en buffer.
Si alguien me puede dar una mano, se lo agradeceria.
-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co
PortalFox - NNTP Forum Gatewa
Leer las respuestas