Sr. Antonio ajuda com SOCKET´s!

Sr. Antonio ajuda com SOCKET´s!

Postby MGA » Mon Sep 22, 2008 2: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

FWH18.02
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
MGA
 
Posts: 1234
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá

Postby Antonio Linares » Mon Sep 22, 2008 3: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby MGA » Mon Sep 22, 2008 5: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

FWH18.02
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
MGA
 
Posts: 1234
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá

Postby Antonio Linares » Mon Sep 22, 2008 7: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby MGA » Mon Sep 22, 2008 8: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 ) < 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

FWH18.02
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
MGA
 
Posts: 1234
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá

Postby Antonio Linares » Mon Sep 22, 2008 8: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby MGA » Mon Sep 22, 2008 8:50 pm

Simmmmmmmmmmmmmmmmmmmmmmmmmmmmm! :D
ubiratanmga@gmail.com

FWH18.02
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
MGA
 
Posts: 1234
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá

Postby MGA » Mon Sep 22, 2008 8:51 pm

Simmmmmmmmmmmmmmmmmmmmmmmmmmmmm! :D
ubiratanmga@gmail.com

FWH18.02
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
MGA
 
Posts: 1234
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá

Postby MGA » Tue Sep 23, 2008 10:58 am

yesssssssssssssssssssssssssssssssss :D
ubiratanmga@gmail.com

FWH18.02
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
MGA
 
Posts: 1234
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá

Postby Antonio Linares » 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
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby MGA » Tue Sep 23, 2008 5:08 pm

:lol:
ubiratanmga@gmail.com

FWH18.02
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
MGA
 
Posts: 1234
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá

Postby Antonio Linares » Tue Sep 23, 2008 5:51 pm

SGS,

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby MGA » Tue Sep 23, 2008 6: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

FWH18.02
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
MGA
 
Posts: 1234
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá

Postby Antonio Linares » Wed Sep 24, 2008 6: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby MGA » Wed Sep 24, 2008 11:12 am

OK...


Muito obrigado Maestro!!! :D
ubiratanmga@gmail.com

FWH18.02
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
MGA
 
Posts: 1234
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 36 guests