FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Sr. Antonio ajuda com SOCKET´s!
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Sr. Antonio ajuda com SOCKET´s!
Posted: Mon Sep 22, 2008 02:44 PM

Sr. Antonio, por favor:

Tenho 3 clientes connectados ao Servidor usando os exemplos SOCKCLI.PRG e SOCKSERV.PRG de FWH/SAMPLES.

Preciso no servidor de tempos em tempos enviar uma mensagem para um determinado CLIENTE(IP), como fazer isso ?

Tentei isso, mais nĂŁo funciona:

oSocket:Connect( cIP ) <-- IP do cliente
oSocket:SendData( cMsg ) <-- Mensagem a ser enviada ao cliente do servidor.

:?

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Sr. Antonio ajuda com SOCKET´s!
Posted: Mon Sep 22, 2008 03:22 PM

SOCKCLI.PRG y SOCKSERV.PRG funcionan bien.

Revisa el codigo fuente que usan y hazlo de la misma manera.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Sr. Antonio ajuda com SOCKET´s!
Posted: Mon Sep 22, 2008 05:14 PM

Sr. Antonio,

Desculpe, mais não estou conseguindo mandar algo do servidor para um cliente quando o cliente já estiver conectado.

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Sr. Antonio ajuda com SOCKET´s!
Posted: Mon Sep 22, 2008 07:18 PM

SGS,

Por favor prueba en tu ordenador fwh\samples\sockserv.prg y sockcli.prg y verás que deben funcionar bien.

Tal vez tengas un cortafuego que impide la conexiĂłn exterior. Pero si te funciona en tu ordenador, entonces se trata de un problema de configuraciĂłn de la seguridad y uso de puertos en tu red.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Sr. Antonio ajuda com SOCKET´s!
Posted: Mon Sep 22, 2008 08:19 PM

Sr. Antonio, Ă© o que estou tentando dizer, o exemplo:

sockserv.prg
sockcli.prg

Funciona PERFEITAMENTE!!! (Neste exemplo consigo mandar algo do sockcli.prg(sendata 2Âş button) para o sockserv.prg) .

O que eu preciso Ă© mandar do SOCKSERV.PRG para SOCKCLI.PRG!

SOCKSERV.PRG MSG("HELLO WORD") ==> SOCKCLI.PRG (E sockcli recebe a mensagem)


Sr. Antonio, nĂŁo sei se o Sr me entendeu, eu quero mandar uma mensagem de origem (SOCKSERV) para o destino (SOCKCLI.PRG)!

Exemplo:

// Socket server connection sample

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"
DEFINE BUTTON OF oBar ACTION MSGCLI("Hello Word") TOOLTIP "msgforclient"

ACTIVATE WINDOW oWnd

return nil

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

function msgcli(cMsg)

?? como mandar para determinado client???
oSocket:SendData( cMsg )

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 ), 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 ) &lt; 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

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Sr. Antonio ajuda com SOCKET´s!
Posted: Mon Sep 22, 2008 08:44 PM

Creo que ahora entiendo lo que quieres decir :-)

Quieres enviar datos desde el server al cliente, si ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Sr. Antonio ajuda com SOCKET´s!
Posted: Mon Sep 22, 2008 08:50 PM

Simmmmmmmmmmmmmmmmmmmmmmmmmmmmm! :D

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Sr. Antonio ajuda com SOCKET´s!
Posted: Mon Sep 22, 2008 08:51 PM

Simmmmmmmmmmmmmmmmmmmmmmmmmmmmm! :D

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Sr. Antonio ajuda com SOCKET´s!
Posted: Tue Sep 23, 2008 10:58 AM

yesssssssssssssssssssssssssssssssss :D

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Sr. Antonio ajuda com SOCKET´s!
Posted: Tue Sep 23, 2008 11:05 AM

SGS,

We are going to build an example.

Please be patient, thanks :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Sr. Antonio ajuda com SOCKET´s!
Posted: Tue Sep 23, 2008 05:08 PM

:lol:

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Sr. Antonio ajuda com SOCKET´s!
Posted: Tue Sep 23, 2008 05:51 PM
SGS,

Solo tienes que añadir esta línea a sockserv.prg:
   DEFINE BUTTON OF oBar ACTION oClient:SendData( "Hello from server!" ) TOOLTIP "Talk to client"
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Sr. Antonio ajuda com SOCKET´s!
Posted: Tue Sep 23, 2008 06:21 PM

Sr. Antonio, meus PARABÉNS!!!

Funciona perfeitamente!

Porem, como enviar a mensagem do servidor para um determinado cliente(IP)?

SERVIDOR

cliente1(192.168.1.101)
cliente2(192.168.1.102) <- quero mandar somente para este!
cliente3(192.168.1.103)

:):(

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Sr. Antonio ajuda com SOCKET´s!
Posted: Wed Sep 24, 2008 06:30 AM

En el servidor sockserv.prg vas creando distintos clientes, asi tendrás oClient1, oClient2, oClient3, etc.

Luego solo has de hacer:
oClient2:SendData( "Hello from server!" )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Sr. Antonio ajuda com SOCKET´s!
Posted: Wed Sep 24, 2008 11:12 AM

OK...

Muito obrigado Maestro!!! :D

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin

Continue the discussion