Reputation: 740
I m writing a network program to Apache Mina Tcp server and java.net.Socket client
Server Code
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) );
And my server handler is ,
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);
}
}
My Socket Client is
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();
The problem is server socket doesn't communicate with java.net.socket. Can someone say what is the wrong hear..
Upvotes: 0
Views: 913
Reputation: 89
in server code replace with this LineDelimiter("$") "$" is decoding delimitter
acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"), LineDelimiter.DEFAULT, new LineDelimiter("$"))));
check this link http://mina.apache.org/mina-project/userguide/ch9-codec-filter/ch9-codec-filter.html
Upvotes: 1