mina android 服务器,Mina框架---Android与服务器通信

Mina是Apache的一個基於NioSocket的框架

环境搭配

服务器程序中

载入libs:

mina-core-2.0.9.jar

slf4j-api-1.7.7.jar

客户端程序中

载入libs:

android-support-v4.jar

mina-core-2.0.7.jar

slf4j-android-1.6.1-RC1.jar

代码

服务器程序

MinaServer.java

public class MinaServer {

public static void main(String[]args){

try{

NioSocketAcceptor acceptor = new NioSocketAcceptor();

acceptor.setHandler(new ServerHandler()); //处理

acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory()));//过滤消息

acceptor.bind(new InetSocketAddress(9900)); //指定port

}catch (Exception e){

e.printStackTrace();

}

}

}

ServerHandler.java (处理器)

public class ServerHandler extends IoHandlerAdapter {

MySQL mysql;

//异常

@Override

public void exceptionCaught(IoSession session, Throwable cause) throws Exception {

}

//接收信息

@Override

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

String msg = (String)message;

System.out.println(msg);

}

//发送信息

@Override

public void messageSent(IoSession session, Object message) throws Exception {

super.messageSent(session, message);

}

@Override

public void sessionClosed(IoSession session) throws Exception {

super.sessionClosed(session);

}

@Override

public void sessionCreated(IoSession session) throws Exception {

super.sessionCreated(session);

}

@Override

public void sessionIdle(IoSession session, IdleStatus status) throws Exception {

super.sessionIdle(session, status);

}

@Override

public void sessionOpened(IoSession session) throws Exception {

super.sessionOpened(session);

}

}

客户端程序

MyActivity.java

@SuppressWarnings("ALL")

public class MyActivity extends Activity {

Button btn_send;

TextView tv_msg;

EditText etv_type_msg;

private String IP = "192.168.2.174";

private int PORT = 9900;

String msg_send = "";

SocketConnector connector;

SocketAddress socketAddress;

ConnectFuture future;

IoFilter filter;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

System.setProperty("java.net.preferIPv6Addresses","false");

btn_send = (Button)findViewById(R.id.btn_send);

tv_msg = (TextView)findViewById(R.id.tv_msg);

etv_type_msg = (EditText)findViewById(R.id.etv_type_msg);

tv_msg.setEllipsize(TextUtils.TruncateAt.MARQUEE);

tv_msg.setMarqueeRepeatLimit(6);

connector = new NioSocketConnector();

filter = new ProtocolCodecFilter(new TextLineCodecFactory());

connector.getFilterChain().addLast("codec", filter);

socketAddress = new InetSocketAddress(IP,PORT);

connector.setHandler(new ClientHandler());

future = connector.connect(socketAddress);

future.join();

if (!future.isConnected()) {

tv_msg.setText("Connect fail");

future.getException().printStackTrace();

return;

} else {

final IoSession session = future.getSession();

etv_type_msg.setText("");

session.write("Connect Successful");

btn_send.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

String sendMsgText = etv_type_msg.getText().toString() + "\r\n";

session.write(sendMsgText);

tv_msg.append(sendMsgText);

etv_type_msg.setText("");

}

});

}

}

}

ClientHandler.java

package com.blogspot.cartonsbase.Client;

import org.apache.mina.core.service.IoHandlerAdapter;

import org.apache.mina.core.session.IoSession;

public class ClientHandler extends IoHandlerAdapter{

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

super.messageReceived(session, message);

}

public void exceptionCaught(IoSession session, Throwable cause)throws Exception {

super.exceptionCaught(session, cause);

}

@Override

public void messageSent(IoSession session, Object message) throws Exception {

super.messageSent(session, message);

}

}

AndroidManifest.xml

package="com.blogspot.cartonsbase.Client"

android:versionCode="1"

android:versionName="1.0"

>

android:label="@string/app_name"

android:icon="@drawable/ic_launcher"

>

android:name="MyActivity"

android:label="@string/app_name"

>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值