ayuda para enviar varibles en un socket

ayuda para enviar varibles en un socket

Postby prm_pedro » Fri Oct 13, 2006 1:17 pm

ya encontre como utilizar un socket,pero ahora alguien me puede ayudar para enviar valores de variables del clientes al servidor, esta parte de codigo es del clientes, pero en esta unicamente me envia un archivo y no se como enviar el valor de las variables

local cFileName := cGetFile( "*.*", "Select a file to send by Internet" )
if ! Empty( cFileName ) .and. File( cFileName )
oSocket:SendData( "SENDFILE " + cFileName( cFileName ))
oSocket:SendFile( cFileName )
oSocket:End()
MsgInfo( "archivo enviado" )
endif

:lol: por otra parte de la parte del server tengo lo siguiente:

#include "FiveWin.ch"

#define ST_COMMAND 1
#define ST_SENDFILE 2


#define FILE_BLOCK 8000

static oWnd, oSocket, oClient

//------------------------------------------------------------------------//

function Main()

local oBar

DEFINE WINDOW oWnd TITLE "Server socket"

DEFINE BUTTONBAR oBar OF oWnd _3D

DEFINE BUTTON OF oBar ACTION Server() TOOLTIP "Listen"

ACTIVATE WINDOW oWnd

return nil

//------------------------------------------------------------------------//

function Server()

oSocket = TSocket():New( 2000 )

oSocket:bAccept = { | oSocket | oClient := TSocket():Accept( oSocket:nSocket ),;
oClient:Cargo := ST_COMMAND,;
oClient:bRead := { | oSocket | OnRead( oSocket ) },;
oClient:bClose := { | oSocket | OnClose( oSocket ) } }
oSocket:Listen()

return nil

//------------------------------------------------------------------------//

function OnRead( oSocket )
local cData := oSocket:GetData()
local cToken
LogFile( "sockserv.txt", { Len( cData ) } )
do case
case oSocket:Cargo == ST_COMMAND
cToken = StrToken( cData, 1 )
do case
case cToken == "SENDFILE"
oSocket:Cargo = ST_SENDFILE
oSocket:hFile = fcreate( StrToken( cData, 2 ) )
case cToken == "MSG"
MsgInfo( SubStr( cData, 5 ) )
endcase

case oSocket:Cargo == ST_SENDFILE
fwrite( oSocket:hFile, cData, Len( cData ) )
LogFile( "sockserv.txt", { "writting..." } )
if Len( cData ) < FILE_BLOCK
// fclose( oSocket:hFile )
// MsgInfo( Len( cData ) )
// oSocket:Cargo = ST_COMMAND
endif
endcase

return nil

//------------------------------------------------------------------------//

function OnClose( oSocket )

MsgInfo( "Client has closed!" )

do case
case oSocket:Cargo == ST_SENDFILE
fclose( oSocket:hFile )
endcase

oSocket:End()

return nil
prm_pedro
 
Posts: 46
Joined: Tue Oct 10, 2006 6:16 pm

Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 13 guests