一个关于Andriod的SSL双向认证的SSLSocket库—SelevenSSLSocket
2016-07-29 19:08
543 查看
一个关于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),建立连接.
相关文章推荐
- java关于socket的ssl双向认证。
- tomcat多工程SSL双向认证的实现(每个端口对应一个工程,每个工程有各自双向的证书)
- SSL双向认证java实现
- SSL双向认证java实现
- 关于 IOCP 整合 SSL 的一个帖子
- SSL双向认证java实现
- SSL双向认证java实现
- 关于单点认证的一个简单实现(结合Form认证)!
- java实现SSL双向认证
- gsoap 通过SSL双向认证调用service
- tomcat6配置ssl双向认证
- Openssl建立SSL双向认证连接源码
- 使用Openssl为Tomcat配置SSL(双向认证)
- Tomcat 6中配置SSL双向认证
- jsp如何利用SSL进行双向认证
- SSL单向、双向认证
- SSL双向认证握手过程
- tomcat实现SSL配置(双向认证)
- TOMCAT-SSL双向认证-配置实例
- SSL双向认证的java实现