2014-04-29 17 views
0

我正在寫一個網絡程序到Apache米娜TCP服務器和客戶端的java.net.Socket阿帕奇米娜SocketAcceptor和java.net.Socket中的通信

服務器代碼

SimpleIoProcessorPool<NioSession> pool = new SimpleIoProcessorPool<NioSession>(NioProcessor.class, 20); 

    SocketAcceptor acceptor = new NioSocketAcceptor(pool); 
    acceptor.setReuseAddress(true); 

    // Add two filters : a logger and a codec 

    acceptor.getFilterChain().addLast("logger", new LoggingFilter()); 
    acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8")))); 
    acceptor.setHandler(new TimeServerHandler()); 

    // Configurate the buffer size and the iddle time 
    acceptor.getSessionConfig().setReadBufferSize(2048); 
    acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 1); 

    acceptor.bind(new InetSocketAddress(8001)); 

而我的服務器處理程序是,

public class TimeServerHandler extends IoHandlerAdapter{ 

@Override 
public void messageReceived(IoSession session, Object message) throws Exception 
{ 

    System.out.println("messagereceived"); 


    String str = message.toString(); 
    System.out.println(str); 

    if(str.trim().equalsIgnoreCase("quit")) { 
     session.close(true); 
     return; 
    } 

    Date date = new Date(); 

    System.out.println("Writing to client"); 

    session.write(date); 
} 

}

我的客戶端的Socket是

 InetAddress inetAddress = InetAddress.getByName("localhost"); 
     Socket socket = new Socket(inetAddress, 8001); 

     BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream())); 

     bufferedWriter.write("Test"); 
     bufferedWriter.flush(); 

     System.out.println(bufferedReader.readLine()); 

     System.out.println("Done...."); 

     bufferedWriter.close(); 
     bufferedReader.close(); 

問題是服務器套接字不能與java.net.socket通信。 有人能說什麼是錯聽..

回答