Page 1 of 1

Socket Cliente solo xharbour sin FiveWin

Posted: Thu Nov 18, 2010 5:46 pm
by jgayoso
Si alguien me puede colaborar con un código de socket en xHarbour sin FiveWin. La idea que envie un mensaje a un IP y puerta determinada y espere respuesta durante un tiempo X.

Desde ya se agradece.

Me ayudarian bastante de dar vuelta un aplicativo en clipper.

Re: Socket Cliente solo xharbour sin FiveWin

Posted: Thu Nov 18, 2010 6:48 pm
by pablovidal
Esto es parte del codigo que uso. usalo a modo de ejemplo, me funciona con FWxH y xHb indistintamente.- En Windows, linux

Code: Select all

Method SendData() Class tDisa
LOCAL cBuffer, cRequest, cResponse, nBytes, pSocket
Local lOk     := .F.
Local aToken  := {}
Local cToken  := ""
Local cSql    := ""
Local cTicket := ""

default lAnular := .F.

  INetInit()
  pSocket := INetConnect( IPdelServidor, nPuerto )

  IF INetErrorCode( pSocket ) <> 0
    Alert( "Socket error:" + INetErrorDesc( pSocket ) )
    INetCleanUp()
    lError := .T.
    Return(.F.)
  ENDIF

  nBytes      := INetSend( pSocket, cTrama )
  cBuffer      := Space(441)
  cResponse := ""

  WHILE ( nBytes > 0 )
   nBytes    := INetRecv(pSocket, @cBuffer )
   cResponse += Left( cBuffer, nBytes )
   cBuffer   := Space(411)
  ENDDO

 aToken := HB_ATokens( cResponse, chr(17) )

 For nAt := 1 to Len( aToken )
  If nAt == 15
   aToken[15] := SubStr( aToken[15], 1, (Len( aToken[15] ) - 1) )
  EndIf
 Next nAt

Return( .t. )
 

Re: Socket Cliente solo xharbour sin FiveWin

Posted: Thu Nov 18, 2010 7:30 pm
by jgayoso
Gracias Pablo, muy agradecido.

Re: Socket Cliente solo xharbour sin FiveWin

Posted: Thu Nov 18, 2010 8:51 pm
by jgayoso
Pablo, se agradece, si me puedes indicar un ejemplo de como usar en honor al tiempo, se agradeceria mucho.


pablovidal wrote:Esto es parte del codigo que uso. usalo a modo de ejemplo, me funciona con FWxH y xHb indistintamente.- En Windows, linux

Code: Select all

Method SendData() Class tDisa
LOCAL cBuffer, cRequest, cResponse, nBytes, pSocket
Local lOk     := .F.
Local aToken  := {}
Local cToken  := ""
Local cSql    := ""
Local cTicket := ""

default lAnular := .F.

  INetInit()
  pSocket := INetConnect( IPdelServidor, nPuerto )

  IF INetErrorCode( pSocket ) <> 0
    Alert( "Socket error:" + INetErrorDesc( pSocket ) )
    INetCleanUp()
    lError := .T.
    Return(.F.)
  ENDIF

  nBytes      := INetSend( pSocket, cTrama )
  cBuffer      := Space(441)
  cResponse := ""

  WHILE ( nBytes > 0 )
   nBytes    := INetRecv(pSocket, @cBuffer )
   cResponse += Left( cBuffer, nBytes )
   cBuffer   := Space(411)
  ENDDO

 aToken := HB_ATokens( cResponse, chr(17) )

 For nAt := 1 to Len( aToken )
  If nAt == 15
   aToken[15] := SubStr( aToken[15], 1, (Len( aToken[15] ) - 1) )
  EndIf
 Next nAt

Return( .t. )