我用utl_tcp往用socket写的接收程序打开的监听端口中写数据,为什么只能一次呢?
我的oracle代码如下:
CREATE OR REPLACE PROCEDURE TEST_UTL_TCP
IS
   C          UTL_TCP.CONNECTION;
   AA         NUMBER;
   CC         BINARY_INTEGER;
   V_STR      VARCHAR2 (4000);
   V_RESULT   VARCHAR2 (100);
BEGIN
   C := UTL_TCP.OPEN_CONNECTION ('127.0.0.1', 20001);
   AA := UTL_TCP.AVAILABLE (C);
   UTL_TCP.FLUSH (C);
   CC := UTL_TCP.WRITE_LINE (C, 'afdfd');
   UTL_TCP.FLUSH (C);
   UTL_TCP.CLOSE_CONNECTION (C);
--   V_RESULT := UTL_TCP.GET_LINE (C, TRUE);
EXCEPTION
   WHEN OTHERS
   THEN
      NULL;
END;
请高手指点!

解决方案 »

  1.   

    有异常么?你在异常里也加入UTL_TCP.CLOSE_CONNECTION (C),怀疑没有正常关闭连接
      

  2.   

    没有异常啊!
    CREATE OR REPLACE PROCEDURE TEST_UTL_TCP
    IS
       C          UTL_TCP.CONNECTION;
       AA         NUMBER;
       CC         BINARY_INTEGER;
       V_STR      VARCHAR2 (4000);
       V_RESULT   VARCHAR2 (100);
    BEGIN
       C := UTL_TCP.OPEN_CONNECTION ('172.16.55.8', 20001);
       AA := UTL_TCP.AVAILABLE (C);
       UTL_TCP.FLUSH (C);
       CC := UTL_TCP.WRITE_LINE (C, '123456');
       UTL_TCP.FLUSH (C);
       UTL_TCP.CLOSE_CONNECTION (C);
    --   V_RESULT := UTL_TCP.GET_LINE (C, TRUE);
    EXCEPTION
       WHEN OTHERS
       THEN
          UTL_TCP.CLOSE_CONNECTION (C);
    END;
    /