有的人说是没弄select~可是网上的例子都没设定啊~汗了

解决方案 »

  1.   

    accept后要另起线程去接受数据,主线程继续accept。不知道lz是怎么做的。
      

  2.   

    我是直接把accept放在一个线程里的啊
      

  3.   

    select是非阻塞模式 , 性能会更好 , 而LZ用到的accept  ,recv都是阻塞模式
    accept只是为了监听端口 , 而你真正数据的接收是recv这个地方 , 所以当你每accept一个信号 , 就要另外开启一个线程去专门recv接收数据。
      

  4.   

    http://linux.chinaunix.net/bbs/forum-70-1.html
      

  5.   


    你不是把accept和receive都放在同一个线程中了吧?
      

  6.   

    落实到代码上就是:
    ServerSocket localServerSocket = new ServerSocket(m_nPort);
    while(true)
    {
       try
       {
         Socket socket = localServerSocket.accept();  // 主线程持续阻塞等待连接
         Receiver rcv = new Receiver(socket); //此处要另起线程去处理已连接的Socket
         rcv.start();
        }
    }Class Receiver extends Thread{
        InputStream inStream= null;
        public Receiver(Socket socket){
            if(socket == null){
                throw new Exception();
            }        inStream = socket.getInputStream;
        }    public void run(){
            while(true){
                inStream.read(); 
            }
    }