Função: SocketConnCria um conexão TCP com uma aplicação de destino, através do uso de um Socket do sistema operacional. Sintaxe Bloco de código |
---|
| SocketConn( < | cIP> nPort> cReq> --> cBufferParâmetros/Elementos Nome | Tipo | Descrição | Obrigatório | Referência |
---|
cIP |
Caractercaractere | Indica a string com o endereço IP ou nome da máquina de destino desejado. | X | | nPort |
Numériconumérico | Indica o número da porta de comunicação que será utilizada para realizar a conexão. | X | | cReq |
Caractercaractere | String a ser enviada para a conexão de destino, caso ela seja estabelecida com sucesso. | X | | nTimeOut |
Numériconumérico | Informa o tempo, em segundos, de espera por um retorno ( time-out ). | | |
Retorno Retorno(caracter)caractere | 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. |
Observações- 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 - 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 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 tempo 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 independente do protocolo, não recomendamos o uso desta função com time-out zero. Exemplos Bloco de código |
---|
language | cpp |
---|
theme | Eclipse |
---|
linenumbers | true |
---|
collapse | false |
---|
| /*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 ) */TstCSock
Local cIp := "www.google.com" |
Local cHttpGet := ""// Monta pacote de requisição HTTP básico |
cHttpGet
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") |
AbrangênciaProtheus 10 , TOTVS Application Server 10 , ByYou Application Server |