一个关于Andriod的SSL双向认证的SSLSocket库—SelevenSSLSocket

一个关于Andriod的SSL双向认证的SSLSocket库—SelevenSSLSocket

##自己封装的一个SSLSocket库,该库是SSL双向认证的.笔者对之前做过项目自己做的一个库.第一次自己做库,各路大神不要吐槽.假如有说错的地方或者是有需要改进的地方,希望各路大神多多指教,本人邮箱为790707677@qq.com,库的话我晚点上传,今天网络不太好,晚点试试.或者感兴趣的读者可以直接发邮件给我.

SelevenSSLSocket使用说明

功能说明:SelevenSSLSocket是针对Android开发的一个SSLSocket通讯库.可以使用其进行对应的长短链接SSLSocket通讯.此说明包含以下几个部分:
1.SelevenSSLSocket基本文件构成.
2.SelevenSSLSocketAPI说明
3.SelevenSSLSocket短链接通讯.
4.SelevenSSLSocket长链接通讯.

1.基本文件构成

SelevenSSLSocket主要包含以下文件
a: SelevenSSLSocket.java——SelevenSSLSocket基本操作类.包含SelevenSSLSocket初始化使用到的各个参数设置,初始化函数,长链接各函数,短链接各函数.清除各类流,socket操作.
b: SSLSocketLongConnectionInterface.java——SSLSocketLongConnectionInterface是SelevenSSLSocket的长链接接口类,包含SSL初始化回调,长链接发送数据回调,长链接接收数据回调.
c: SelevenSSLSocketService.java——SelevenSSLSocketService是SelevenSocket长链接收服务类.主要用于定义一个后台服务不断接收来自服务器回复的消息.其机制利用SSLSocketLongConnectionInterface中的长链接接收数据回调函数,这里我们将会在后面提到.
d: SelevenSSLSocketHeartBeatTimer.java——SelevenSSLSocketHeartBeatTimer是SelevenSSLSocket长链接发送心跳包内部自定义的一个定时任务类.用于发送心跳包维持长链接.

2.SelevenSSLSocketAPI说明

a: SelevenSSLSocket.java
/**
 * SSLSocket初始化函数,使用SSLSocket必须先对其进行初始化
 * @param Context Application对象
 * @param key 私钥证书
 * @param ca 公钥证书
 * */

public void init(Context context,int key,int ca);

  /**
 * SSLSocket 长链接初次连接函数
 * @param strBuf 发送字符
 * @param hostName 连接的服务器名称
 * @param serverPort 连接的服务器端口
 * @return 长链接初次连接返回字符,接收失败返回SelevenSSLSocket.NG_RECV
 * */
public  String longConnectionInit(String strBuf,String hostName,int serverPort);

/**
 * 长链接在发送函数LongConnectionInit成功返回信息之后,单次发送数据
 * @param strBuf 发送的数据
 * @return 返回发送是否成功,true为发送成功,false为发送失败
 * */
public  Boolean longConnectionSend(String strBuf);

/**
 * 长链接在发送函数LongConnectionInit成功返回信息之后,单次发送数据
 * @param strBuf 发送的数据
 * @return 返回发送是否成功,true为发送成功,false为发送失败
 * */
public  String longConnectionRecv();

/**
 * 短链接发送函数
 * @param strBuf 发送内容
 * @param hostName 连接的服务器名称
 * @param serverPort 连接的服务器端口
 * @return 接收字符,假如接收失败,则返回ng
 * */
public String shortConnection(String strBuf,String hostName,int serverPort);

/**
 * socket输入输出流close,以及socket的close
 * 此函数会将长链接接口函数的接口清除掉,因此,执行完该函数以后应该重新为长链接接口进行重置
 * SSLSocketLongConnectionInterface:长链接接口类
 * */
public void clearSocket();

/**
 * 开启长链接接收服务
 * @param Context 当前Activity
 * */
public void startLongSSLSocketService(Activity context);

/**
 * 开启长链接心跳包服务
 * @param delay 心跳包发送首次延迟时间
 * @param period 心跳包发送周期
 * @param heartBeatString 心跳包字符串
 * */
public void startTimerLongConnection(long delay,long period,String heartBeatString);

/**
 * 清除长连接开启服务以及清除心跳包定时器
 * */
public void clearLongConnectionServiceAndTimmer();

/**
 * 设置连接超时时间,默认是5000(5秒)
 * @param connectTimeout 连接超时时间
 * */
public void setConnectTimeout(int connectTimeout);

/**
 * 设置接收消息超时时间,默认是5000(5秒)
 * @param recvTimeout 接收消息超时时间
 * */
public void setRecvTimeout(int recvTimeout);

/**
 * 设置SSL通讯私钥密码
 * @param cLIENT_KET_PASSWORD; 私钥密码
 * */

/**
 * 设置SSL通讯公钥密码
 * @param cLIENT_KET_PASSWORD 公钥密码
 * */
public String getCLIENT_TRUST_PASSWORD();

/**
 * 设置当前SSLSocket接收发送过程中,流接收后的编码方式,默认为UTF-8
 * */
public void setENCONDING(String eNCONDING);

b.SSLSocketLongConnectionInterface.java
/**
 * SSLSocket初始化回调,发送消息成功isSuc为true,失败者为false
 * sendBuf为发送的消息
 * */
public void SSLSocketInit(Boolean isSuc);

/**
 * 长链接接口发送回调,发送消息成功isSuc为true,失败者为false
 * sendBuf为发送的消息
 * */
public void SSLSocketLongConnectionSend(Boolean isSuc,String sendBuf);

/**
 * 长链接接口接收回调,接收消息成功isSuc为true,失败者为false
 * 成功recv为接收到的内容,失败recv为"ng"
 * */
public void SSLSocketLongConnectionRecv(Boolean isSuc,String recv);

3.SelevenSSLSocket短链接通讯.

SelevenSSLSocket进行短链接通讯步骤如下:
a.初始化SSLSocket.
  SelevenSSLSocket sslsocket = new SelevenSSLSocket();
  sslsocket.init(getApplicationContext(), R.drawable.key, R.drawable.ca);
b.调用SSLSocket短链接收发函数
  String sendBuf = "This is a message send!";
  sslsocket.shortConnection(sendBuf);

4.SelevenSSLSocket长链接通讯.

SelevenSSLSocekt进行长链接通讯步骤如下:
a.初始化SSLSocket.
  SelevenSSLSocket sslsocket = new SelevenSSLSocket();
  sslsocket.init(getApplicationContext(), R.drawable.key, R.drawable.ca);
b.在AndroidManifast中注册长链接接收服务.
    <service android:name="com.seleven.sslsocket.SelevenSSLSocketService"></service>
c.在调用的Activity中继承长链接接口SSLSocketLongConnectionInterface,并实现相关函数.
    eg:public class MainActivity extends Activity implements SSLSocketLongConnectionInterface{

    }
d.设置SSLSocket对象对应的接口SSLSocketLongConnectionInterface.
    sslsocket.setLongConnectionInterface(MainActivity.this);
f.调用函数public String longConnectionInit(String strBuf,String hostName,int serverPort);完成长链接首次数据交互,比如登录的账号密码信息:
    JSONObject data = new JSONObject();
    data.put("login_name", "aaabb");
    data.put("password", "aaabb");
    sslsocket.longConnectionInit(dara.toString(),HOST_NAME, SERVER_PORT);
g.在适当的地方调用public void startTimerLongConnection(long delay,long period,String heartBeatString)函数开启SelevenSSLSocket服务,并设置心跳包消息,心跳包延迟启动时间,心跳包发送周期.
   sslsocket.startTimerLongConnection(5000, 5000,"心跳包消息");
h.发送消息成功或失败,接收消息成功或者失败(接收超时默认为5s).将会触发接口SSLSocketLongConnectionInterface的回调函数public void SSLSocketLongConnectionSend(Boolean isSuc,String sendBuf);以及public void SSLSocketLongConnectionRecv(Boolean isSuc,String recv);
i.在恰当的时候,应该清除SSLSocket长链接的服务,调用public void clearLongConnectionServiceAndTimmer();函数.(比如在系统得知连接已经断开的时候,可以通过发送消息是否失败,心跳包是否有回复,接收消息ng次数等消息进行自行判断).再重新调用函数 public String longConnectionInit(String strBuf,String hostName,int serverPort),建立连接.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值