Enviar Socket criando conexão tcp/ip

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
ohoseki
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qui, 05 Jan 2006 9:44 am
Localização: sp

Mestres estou com um grande problema
Meu sistema precisa se comunicar com um display eletrônico de senha e consultório. Aqueles que tem nas recepções de hospitais.

Preciso criar uma conexão tcp/ip com host/porta: 192.1.3.180/4000
enviando dados de número e consultório

Hoje está feito em java utilizando socket e precisamos colocar isso em uma procedure no forms.

Alguém já fez isso?
valeu
:shock:
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Eu nunca fiz isso, mas creio que você conseguirá com a UTL_TCP.
http://www.lc.leidenuniv.nl/awcourse/or ... /u_tcp.htm
http://www.lc.leidenuniv.nl/awcourse/or ... u_tcp2.htm

Selecionar tudo

SQL> desc utl_tcp
Element                        Type      
------------------------------ --------- 
CONNECTION                     TYPE      
CRLF                           VARIABLE  
BUFFER_TOO_SMALL               EXCEPTION 
END_OF_INPUT                   EXCEPTION 
NETWORK_ERROR                  EXCEPTION 
BAD_ARGUMENT                   EXCEPTION 
PARTIAL_MULTIBYTE_CHAR         EXCEPTION 
TRANSFER_TIMEOUT               EXCEPTION 
BUFFER_TOO_SMALL_ERRCODE       CONSTANT  
END_OF_INPUT_ERRCODE           CONSTANT  
NETWORK_ERROR_ERRCODE          CONSTANT  
BAD_ARGUMENT_ERRCODE           CONSTANT  
PARTIAL_MULTIBYTE_CHAR_ERRCODE CONSTANT  
TRANSFER_TIMEOUT_ERRCODE       CONSTANT  
OPEN_CONNECTION                FUNCTION  
AVAILABLE                      FUNCTION  
READ_RAW                       FUNCTION  
WRITE_RAW                      FUNCTION  
READ_TEXT                      FUNCTION  
WRITE_TEXT                     FUNCTION  
READ_LINE                      FUNCTION  
WRITE_LINE                     FUNCTION  
GET_RAW                        FUNCTION  
GET_TEXT                       FUNCTION  
GET_LINE                       FUNCTION  
GET_TEXT_NCHAR                 FUNCTION  
GET_LINE_NCHAR                 FUNCTION  
FLUSH                          PROCEDURE 
CLOSE_CONNECTION               PROCEDURE 
CLOSE_ALL_CONNECTIONS          PROCEDURE 

SQL> 
Eis um exemplo: (se conecta num web-server e pega o primeiro documento que abrir)

Selecionar tudo

DECLARE
  c  utl_tcp.connection;  -- TCP/IP connection to the Web server
  ret_val pls_integer; 
BEGIN
  c := utl_tcp.open_connection(remote_host => 'www.acme.com',
                               remote_port =>  80,
                               charset     => 'US7ASCII');  -- open connection
  ret_val := utl_tcp.write_line(c, 'GET / HTTP/1.0');    -- send HTTP request
  ret_val := utl_tcp.write_line(c);
  BEGIN
    LOOP
      dbms_output.put_line(utl_tcp.get_line(c, TRUE));  -- read result
    END LOOP;
  EXCEPTION
    WHEN utl_tcp.end_of_input THEN
      NULL; -- end of input
  END;
  utl_tcp.close_connection(c);
END;

Também existe a possibilidade de fazer uma JAVA STORED PROCEDURE que faz o serviço. (aqui no forum tem alguns exemplos disso).

:-o
ohoseki
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qui, 05 Jan 2006 9:44 am
Localização: sp

Legends. Deu certo. Utilizei o seguinte código :D

Selecionar tudo

   
    declare
       c  utl_tcp.connection;  -- TCP/IP connection to the Web server  
        x pls_integer;
     BEGIN
       c := utl_tcp.open_connection('192.1.3.180', 4000);  -- open connection
  
       x := utl_tcp.write_line(c, '!#'||chr(9)||chr(9)||chr(1)||chr(4)||chr(4)||'.');    -- send HTTP request 
--A linha acima envia os numeros do consultório e a senha
       x := utl_tcp.write_line(c);

       utl_tcp.close_connection(c);
       
     exception
     	when others then
     	message(sqlerrm);
       
     END;
apac
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Seg, 28 Mai 2007 11:29 am
Localização: Odivelas

Agradeço, se me ajudarem, estou farto de procurar e não encontro forma de solucionar o meu problema:
Tenho um ficheiro que quero enviar diariamento para um endereço http
porta 80 do servidor da base de dados para um site .

Podem-me ajudar sff.

è novo para mim e tenho urgencia .

Obrigado
Responder
  • Informação