Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 2 Atual »

Função: SocketConn

Cria um conexão TCP com uma aplicação de destino, através do uso de um Socket do sistema operacional.

SocketConn ( < cIP>, < nPort>, < cReq>, [ nTimeOut] ) --> cBuffer

 

NomeTipoDescriçãoObrigatórioReferência
cIPCaracterIndica a string com o endereço IP ou nome da máquina de destino desejado.X 
nPortNuméricoIndica o número da porta de comunicação que será utilizada para realizar a conexão.X 
cReqCaracterString a ser enviada para a conexão de destino, caso ela seja estabelecida com sucesso.X 
nTimeOutNuméricoInforma o tempo, em segundos, de espera por um retorno ( time-out ) .  

 

cBuffer
    (caracter)
  • String de bytes retornados pelo serviço chamado. Cada serviço pode retornar um buffer composto de uma string de bytes / caracteres, a ordem e interpretação deste retorno deve ser conhecida pela aplicação que o utiliza.


Para realizar a conexão, é necessário informar o destino, que pode ser o IP ou o nome da máquina, e, em seguida, o número da porta de comunicação que será utilizada para realizar a união através dessa porta. Através do parâmetro cReq, devemos informar uma string, que será  enviada  para o servidor-alvo da conexão, caso a conexão seja estabelecida. Após ser enviada, o Protheus Server aguardará por um retorno, até que o time-out seja atingido ou a conexão seja encerrada pelo server. A função retornará uma string contendo o buffer retornado pelo servidor-alvo da conexão. Caso o parâmetro de time-out informado seja 0 (zero), a função aguardará indefinidamente uma resposta do servidor para a conexão efetuada.A conexão será realizada a partir do TOTVSAppServer, mesmo que a aplicação Advpl seja iniciada e/ou executada a partir do TOTVSSmartClient.

Uso em serviços e/ou protocolo com conexão persistente

   Como a conexão realizada não é persistente, e o fluxo de recebimento de dados também não oferece maiores controles, o uso desta função é indicado apenas para integrações com sistemas de conexão não-persistente. O uso desta função também é recomendável para requisições   "curtas" de dados, nada que precise trafegar mais do que 1 KB

   Caso a função seja utilizada com um protocolo persistente, por exemplo HTTP 1.1, mesmo que a função complete o recebimento da requisição em poucos segundos, como a conexão no servidor-alvo não é fechada, a função ficará em espera de recebimento, até que seja atingido o tmepo especificado de time-out , para então retornar ao programa Advpl a string de dados recebida. Caso o parâmetro especificado seja 0 (zero), a conexão permanece aberta até que ela seja fechada pelo server, e/ou ocorra um evento de indisponibilidade / desconexão de rede. Por isso, indepentende do protocolo, não recomendamos o uso desta função com time-out zero.
 

/*No exemplo abaixo, usamos a função para simular uma chamada de requisição HTTP
para a página principal do servidor www.google.com , na porta 80 ( http ) */
User Function TstCSock()
Local cIp := "www.google.com"
Local nPorta := 80
Local ntimeOut := 5
Local cHttpGet := ""// Monta pacote de requisição HTTP básico
 cHttpGet += 'GET / HTTP/1.0'+CRLF
cHttpGet += 'Accept: */*'+CRLF
cHttpGet += 'Accept-Language: pt-br'+CRLF
cHttpGet += 'User-Agent: Mozilla/4.0 (compatible)'+CRLF
cHttpGet += CRLF// Faz a requisição
cRet := socketconn(cIp,nPorta,cHttpGet,nTimeOut)// Mostra o retorno na tela
MsgStop(cRet,"SOCKET RESPONSE")
Return
Protheus 10 , TOTVS Application Server 10 , ByYou Application Server

 

  • Sem rótulos