学习mina同步与异步网络通讯(一)——同步通讯

准备MINA

<dependency>  
            <groupId>org.apache.mina</groupId>  
            <artifactId>mina-core</artifactId>  
            <version>2.0.7</version>  
        </dependency>

由于服务端是C写的。这面先写个客户端。使用的是短链接

客户端代码

//抽象客户端父类  
public abstract class AbstractMinaProvider implements MinaProvider {  
  
/** 
 * 主机 
 */  
private String host = "127.0.0.1";  
/** 
 * 端口号 
 */  
private int port = 1234;  
/** 
 * 超时时间 
 */  
private long timeOut = 10;  
/** 
 * 请求类型 
 */  
private boolean snyc = true;  
/** 
 * socket连接器接口 
 */  
private SocketConnector connector;  
/** 
 * socket会话配置接口 
 */  
private SocketSessionConfig sessionConfig;  
/** 
 * 用于connect()后,执行一些操作,获取getSession()等。 
 */  
private ConnectFuture connectFuture;  
/** 
 * socket会话 
 */  
private IoSession session;  
/** 
*构造器,判断是否同步通讯 
*/  
protected AbstractMinaProvider(boolean sync) {  
      //读取配置文件  
      loadConfigs();  
      // 实例化connector  
      connector = new NioSocketConnector();  
      // 添加过滤器,在最后添加编码解码过滤器
      connector.getFilterChain().addLast("codec",new ProtocolCodecFilter(new CodecFactory(true))); //没有他就别玩了~  
      if(sync){//如果是同步传输,使用默认配置。  
          sessionConfig = getConnector().getSessionConfig();  
          //开启读方法,设置IoSession的read()方法为可用,默认为false   
          sessionConfig.setUseReadOperation(true);  
      }  
  }  
  
  private void loadConfigs() {  
      //略  
  }  
  
  @Override  
  public void connect() {  
      //获得连接  
      connectFuture = getConnector().connect(new InetSocketAddress(getHost(),getPort()));  
      //等待连接创建完成   
      connectFuture.awaitUninterruptibly();  
      //获取会话  
      session = connectFuture.getSession();  
  }  
  
  @Override  
  public void disconnect() {  
      if(session!=null){  
          //等待连接断开  
          session.close(true).awaitUninterruptibly();  
          session = null;  
      }  
  }  
  //setter/getter略  
    
}  
客户端同步通讯子类  
代码如下:  
public class MinaRunner extends AbstractMinaProvider {  
    /** 
     * 构造函数,创建connect、Session,true同步传输 
     */  
    public Mi
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值