本文讲述了:
1、如何在Android上搭建Mina服务端(使用Mina 2.0.15、编程环境Eclipse);
2、如何在iOS上建立Socket客户端(使用CocoaAsyncSocket第三方通讯框架、Swift3.0);
3、Android iOS间的TCPSocket通讯测试。
一、在Android上搭建Mina服务端
1、下载Mina最新版
直接进官网:http://mina.apache.org/ 进入后左边栏上方有一个 Latest Downloads — Mina x.x.xx,点击进入后如下图。
点击标注的这项,进入下一个界面。
用它建议的这个链接下载Mina最新版,下载后是一个zip包。解压它,如下图。(我用的是Mina 2.0.15,都一样)
好,到这里Mina的准备工作算是完成了。
2、下面开始搭建Mina服务端,打开Eclipse,建立Android工程(这里将工程命名为MinaServer)。然后就是使用Mina了,就是在自己的工程中导入Mina提供的第三方jar包。
在刚才解压得到的Mina文件夹中找到 dist - mina-core-x.x.xx 和 lib - slf4j-api-x.x.xx这两个Jar包,然后将他们拖到我们工程的libs文件夹中,选中它俩 右击 - Build Path - Add to Build Path,下面图片是导入后的图片,导入后会多出一个Referenced Libraries 里面有我们刚刚添加的那两个第三方包。到这里我们就将Mina导入进了我们的项目。
(其实导入包的方法不只这一种,还有别的方法,我也尝试了,因为别的方法看上去比这一种显得正规,但是在程序运行中会报错:Could not find class ‘org.apache.mina.transport.socket.nio.NioSocketAcceptor’, referenced from method alex.example.minaserver.MainActivity.onCreate,这个问题的解决方案就是用这种看着不专业的jar包导入方法。网上有不少人遇到此问题,可见此坑之深…)
3、写Mina服务端代码(这里不做解释,因为我也没彻底玩透Mina框架,只是会简单使用,也和大家一样是小白)
打开 MinaActivity.java
package alex.example.minaserver;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.LineDelimiter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class MainActivity extends Activity {
// Mina相关声明-----------------------
private IoAcceptor acceptor;
private static int PORT = 4000; // 端口号,要求客户端与服务器端一致
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
Log.d("Mina", "开始启动 MinaServer...");
// 创建一个非阻塞的server端的Socket
acceptor = new NioSocketAcceptor();
<