日期:2014-05-18  浏览次数:20748 次

紧急求助:请问如何解决JAVA socket通信时的缓冲区的清空问题
我用servlet作的socket连接客户端的访问程序;需要用web页面通过socket收发远程客户端的数据信息;每次连接客户端是通过数据库查询ip及port后,用相应的ip及port进行连接;为什么连上以后向客户端发送信息后再读取客户端返回过来的信息都是一样的?servlet不是多线程的吗?每连接一个socket应该都是新的线程;为什么输入缓冲区里的数据还是一直是同一个客户端的数据;连接新的连接后读取缓冲区的数据还是旧的?缓冲区是共享的吗?请问能不能为每个连接建立独立的缓冲区?谢谢!

下面是我的一部分代码请大家指教:

servlet的
  public   void   doGet(HttpServletRequest   request,   HttpServletResponse   response)   throws
                        ServletException,   IOException   {
                response.setContentType(CONTENT_TYPE);
                PrintWriter   out   =   response.getWriter();
                sta=(StationVO)   request.getAttribute( "setst ");\\得到数据库查询数据
                out.println( " <input   type=hidden   name=id   value=\ " "+sta.getId()+ "\ "/> ");
                out.println( " <input   type=hidden   name=type   value=\ " "+request.getParameter( "type ")+ "\ "/> ");
                String   host=sta.getSIp();\\从bean得到查询的ip
                int   port=sta.getSPort();\\从bean得到查询的port
                if(socketbean.cSocket==null){
                          socketbean.connectionsocket(host,port);\\通过socketbean连接
                  }
                else   if(socketbean.cSocket!=null){
                          try   {
                                  socketbean.searchtw();
                                  if   (socketbean.getDataInputStream()   !=   null)   {
                                          socketbean.read();\\每次读的还是以前的数据,如何解决?
                                  }
                          }   catch   (Exception   e)   {

                    }            

socketbean的代码:

import   java.net.*;
import   java.io.*;
import   java.util.*;
import   java.lang.*;

public   class   SocketBean   {

        public   SocketBean()   {
        }
        private   String   Address;   //服务器地址
        private