Socket跨平台通信——服务端Android、客户端iOS

本文介绍了如何使用Android的Mina服务端与iOS的CocoaAsyncSocket客户端进行TCP Socket跨平台通信。在Android端,详细阐述了搭建Mina服务端的步骤,包括导入Mina库和添加权限。在iOS端,讲解了CocoaAsyncSocket的导入和使用,以及客户端代码编写。最后进行了通信测试,确保连接、发送和接收的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文讲述了:
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 DownloadsMina x.x.xx,点击进入后如下图。
这里写图片描述

点击标注的这项,进入下一个界面。
这里写图片描述

用它建议的这个链接下载Mina最新版,下载后是一个zip包。解压它,如下图。(我用的是Mina 2.0.15,都一样)
这里写图片描述

好,到这里Mina的准备工作算是完成了。

2、下面开始搭建Mina服务端,打开Eclipse,建立Android工程(这里将工程命名为MinaServer)。然后就是使用Mina了,就是在自己的工程中导入Mina提供的第三方jar包。
在刚才解压得到的Mina文件夹中找到 dist - mina-core-x.x.xxlib - 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();
            // 设置过滤器(使用mina提供的文本换行符编解码器)
            acceptor.getFilterChain().
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值