日期:2014-05-20  浏览次数:20875 次

积存半年之久的问题,WEB推技术中如何实现客户端与服务器端连接不断开?
小妹不才,查了很多WEB推技术的资料,可是始终没搞明白如何持续往IE客户端输出数据,恳求高手指点。

        我现在只能完成一次输出,具体过程如下:
        1.客户端IE输入指定网址,假设访问端口8080;
        2.服务器端通过监听8080端口,一旦发现有连接,即创建一个socket,并建立一个线程。
        3.在线程中创建该socket得输出与输入对象,在socket.close前可以成功通过输出对象往IE输出数据,但无法持续输出;若使用线程.sleep,在客户端中展现也是先一直等待,直到sleep时间结束后一次输出所有记录,而不是分次持续输出。

        附上我的测试代码,请各位达人一定教教我啊,为了这个简单的东西郁闷了好久。先谢过~


//类ChatServer   主服务,服务器端监控类

import   java.io.*;
import   java.net.*;
import   java.util.Date;
public   class   ChatServer{

        public   static   void   main(String[]   args)   throws   Exception{
                (new   ChatServer()).monitor();
        }

        public   void   monitor()   throws   Exception   {
                int   port   =   8080;
                int   i=1;
                ServerSocket   srvSocket   =   new   ServerSocket(port);
                System.out.println( "Listenning   at   "   +   port   +   "   ... ");
                System.out.println( "Accepting   connection... ");
                while   (true)   {
                        try   {  
                                Socket   socket   =   srvSocket.accept();
                                long   session_id   =   new   Date().getTime();
                                System.out.println( "new   socket: "+i++);
                                Thread   t   =   new   ThreadedChatHandle(socket);
                                t.start();
                        }   catch   (IOException   e)   {
                                System.out.println( "Exception   occurs   when   accept():   "   +   e.getMessage());
                        }
                }
        }

}

//类ThreadedChatHandle   线程,处理类
import   java.io.*;
import   java.net.*;

public   class   ThreadedChatHandle   extends   Thread{

        private   Socket   socket;

        private   BufferedReader   in;

        private   PrintStream   os   ;