论坛首页 Java企业应用论坛

Apache Mina简单实例客户端篇

浏览 15309 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-30   最后修改:2010-02-08
package com.heming.apache.mina.samplesclient;

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;

/**
 * 消息处理类
 * @author 何明
 *
 */
public class SamplMinaClientHander extends IoHandlerAdapter {

	@Override
	public void exceptionCaught(IoSession arg0, Throwable arg1)
			throws Exception {
		// TODO Auto-generated method stub

	}

	/**
	 * 当客户端接受到消息时
	 */
	@Override
	public void messageReceived(IoSession session, Object message) throws Exception {

		//我们已设定了服务器的消息规则是一行一行读取,这里就可以转为String:
		String s = (String)message;
		
		//Writer the received data back to remote peer
		System.out.println("服务器发来的收到消息: " + s);
		
		//测试将消息回送给客户端
		session.write(s);

	}

	@Override
	public void messageSent(IoSession arg0, Object arg1) throws Exception {
		// TODO Auto-generated method stub

	}

	/**
	 * 当一个客户端被关闭时
	 */
	@Override
	public void sessionClosed(IoSession session) throws Exception {
		System.out.println("one client Disconnect");

	}

	@Override
	public void sessionCreated(IoSession arg0) throws Exception {
		// TODO Auto-generated method stub

	}

	@Override
	public void sessionIdle(IoSession arg0, IdleStatus arg1) throws Exception {
		// TODO Auto-generated method stub

	}

	/**
	 * 当一个客户端连接进入时
	 */
	@Override
	public void sessionOpened(IoSession session) throws Exception {

		System.out.println("incomming client:" + session.getRemoteAddress());
		session.write("我来啦");

	}

}


package com.heming.apache.mina.samplesclient;

import java.net.InetSocketAddress;

import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketConnector;

/**
 * 启动客户端
 * @author 何明
 *
 */
public class MainClient {

	public static void main(String []args)throws Exception{
		
		//Create TCP/IP connection
		NioSocketConnector connector = new NioSocketConnector();
		
		//创建接受数据的过滤器
		DefaultIoFilterChainBuilder chain = connector.getFilterChain();
		
		//设定这个过滤器将一行一行(/r/n)的读取数据
		chain.addLast("myChin", new ProtocolCodecFilter(new TextLineCodecFactory()));
		
		//服务器的消息处理器:一个SamplMinaServerHander对象
		connector.setHandler(new SamplMinaClientHander());
		
		//set connect timeout
		connector.setConnectTimeout(30);
		
		//连接到服务器:
		ConnectFuture cf = connector.connect(new InetSocketAddress("localhost",8899));
		
		//Wait for the connection attempt to be finished.
		cf.awaitUninterruptibly();
		
		cf.getSession().getCloseFuture().awaitUninterruptibly();
		
		connector.dispose();
	}
	
}


   发表时间:2010-02-01  
哥们,问一个问题。
我用你的这个程序,客户端接收不到服务器发送来的数据是怎么回事。
0 请登录后投票
   发表时间:2010-02-01  
如果你在了,一定要给回复一下。
这个问题快搞死我了。
0 请登录后投票
   发表时间:2010-02-01  
youyang 写道
如果你在了,一定要给回复一下。
这个问题快搞死我了。

不可能的哈,我都是经过测试了的啊,发现什么错误没哦
0 请登录后投票
   发表时间:2010-02-08  
没错,但是也没有回。
留下你的E—MAIL,我把项目发给你,
你帮我看一下吧
0 请登录后投票
   发表时间:2010-02-08  
youyang 写道
没错,但是也没有回。
留下你的E—MAIL,我把项目发给你,
你帮我看一下吧

你把附件下下来看吧
0 请登录后投票
   发表时间:2010-02-25  
服务端收不到消息 估计你客户端发送到消息没有按照服务端解码的要求来发 在这里就是没有 换行符
0 请登录后投票
   发表时间:2010-06-17   最后修改:2010-06-17
youyang 写道
哥们,问一个问题。
我用你的这个程序,客户端接收不到服务器发送来的数据是怎么回事。

修改程序里的客户端ip为你的机器的ip地址,或者是127.0.0.1。然后再修改服务器端和客户端的端口,两者设置一致,应该没问题的!
0 请登录后投票
   发表时间:2010-06-26  
请教个问题。
客户端怎么做到一次连接 多次发送呢。
注意 是客户端。
多谢
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics