import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.security.KeyPair;
import java.security.KeyStore;
import java.security.MessageDigest;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.text.DateFormat;
import java.util.Date;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSocket;
public class AndroidSSLServer2 implements Runnable, Cloneable
{
private static final int SERVER_PORT = 6666; //端口号
private static final String SERVER_IP = "192.168.2.148"; //"127.0.0.1";//连接IP
private static final String SERVER_KEYSTORE_PASSWORD = "1234567"; //私钥密码
private static final String SERVER_TRUSTSTORE_PASSWORD = "1234567";//信任证书密码
private static final String SERVER_AGREEMENT = "TLS"; //使用协议
private static final String SERVER_KEY_MANAGER = "X509"; //密钥管理器
private static final String SERVER_TRUST_MANAGER = "X509"; //信任证书管理器
private static final String SERVER_KEYSTORE_TYPE = "BKS"; //"JKS";//密库,这里用的是BouncyCastle密库
private static final String SERVER_TRUSTSTORE_TYPE = "BKS"; //"JKS";//
private static final String ENCONDING = "utf-8"; //字符集
private static final String KEYSTORE = "..\\data\\server.keystore.bks";
public SSLSocket client;
public PrintStream out;
public InputStream in;
private Thread serverInstance;
private SSLServerSocket serverSocket;
private int port;
public AndroidSSLServer2()
{
client = null;
}
public boolean clientIsOpen()
{
return client != null;
}
public Object clone()
{
try
{
return super.clone();
}
catch(CloneNotSupportedException _ex)
{
throw new InternalError();
}
}
public void close()
throws IOException
{
client.close();
client = null;
in = null;
out = null;
}
public static void main(String args[])
{
// System.setProperty("javax.net.ssl.trustStore","MyCacertsFile");
// Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
// Security.setProperty(arg0, arg1)
try
{
(new AndroidSSLServer2()).startServer();
System.out.println("Server started at port: " + SERVER_PORT);
}
catch(IOException ioexception)
{
System.out.print("Server failed: " + ioexception + "\n");
}
}
public final void run()
{
if(serverSocket != null) {
// Thread.currentThread().setPriority(10);
try
{
do {
SSLSocket socket = (SSLSocket)serverSocket.accept();
AndroidSSLServer2 networkserver = (AndroidSSLServer2)clone();
networkserver.serverSocket = null;
networkserver.client = socket;
(new Thread(networkserver)).start();
System.out.println("new Thread: networkserver == "
+ networkserver
+ ", and start it.");
} while(true);
} catch(Exception exception) {
System.out.print("Server failure\n");
exception.printStackTrace();
}
try {
serverSocket.close();
} catch(IOException exception) {
}
System.out.print("cs=" + serverSocket + "\n");
} else {
try {
out = new PrintStream(new BufferedOutputStream(client.getOutputStream()), false);
BufferedReader inOfClient = new BufferedReader(
new InputStreamReader(
client.getInputStream()), 8192);
while (true) {
StringBuffer str = new StringBuffer("");
String line = null;
// while((line = inOfClient.readLine()) != null) {
//// if (!inOfClient.ready()) {
//// break;
//// }
// str.append(line);
// System.out.println("line == " + line);
// }
str.append(inOfClient.readLine());
if (str.toString().equals("")) {
str.append("0");
}
System.out.println("str: " + str.toString());
int operation = 0;
if (String.valueOf(1).equalsIgnoreCase(str.toString())) {
operation = 1;
} else if (String.valueOf(2).equalsIgnoreCase(str.toString())) {
operation = 2;
}
System.out.println("operation: " + operation);
// int operation = 0;
// String str = "";
switch(operation) {
case 1://客户建立连接
connectedToClient();
break;
case 2://客户需要关闭
close();
return;
default:
serviceRequest(str.toString());
break;
}
}
} catch(Exception exception) {
exception.printStackTrace();
}
}
}
private boolean connectedToClient() {
System.out.println("-------------------Server connected to client: start--------------------------");
System.out.println("Connected!");
out.println("Connected!\n");
out.println();
out.flush();
System.out.println("-------------------Server connected to client: end--------------------------");
return true;
}
public void serviceRequest(String string) throws IOException
{
String date = DateFormat.getInstance().format(new Date());
System.out.println("-------------------The messages server sending to client: start--------------------------");
System.out.println("I am server. The message you sent to me is: " + string+". ");
System.out.println("The data following is printed from server:\n");
System.out.println("HTTP/1.0 200 OK\n");
System.out.println("Hello, this is a SSL Time server: " + getClass().getName() + ", Port: " + this.port+"\n");
System.out.println("Current time:" + date);
// System.out.println();//shenbo//对传输的数据进行数字签名
System.out.println("over!\n");
System.out.println("-------------------The messages server sending to client: end--------------------------");
// out.print("I am server. The message you sent to me is: " + string);
// out.println("The data following is printed from server:\n");
out.println("HTTP/1.0 200 OK\n");
out.println("Hello, this is a SSL Time server: " + getClass().getName() + ", Port: " + this.port+"\n");
out.println("Current time:" + date + "\n");
// out.println();//shenbo//对传输的数据进行数字签名
out.println("over!\n");
out.flush();
}
public final void startServer() throws IOException
{
port = SERVER_PORT;
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
AndroidSSLSocket.rar (44个子文件)
AndroidSSLocalLServer
.project 397B
bin
SignatureTest.class 4KB
MessageDigestFrame.class 5KB
MessageDigestFrame$2.class 933B
MessageDigestFrame$1.class 673B
CertificateSigner.class 4KB
MessageDigestTest.class 592B
AndroidSSLServer.class 4KB
MessageDigestFrame$3.class 869B
AndroidSSLServer2.class 7KB
.settings
org.eclipse.jdt.core.prefs 629B
src
AndroidSSLServer2.java 9KB
.classpath 301B
data
server.cer 763B
ssl.policy 52B
server.keystore.bks 1KB
clock.wgt 78KB
cmd
cmd_ca.bat 2KB
AndroidSSLClient
.project 852B
default.properties 449B
bin
AndroidSSLClient.apk 51KB
com
kortide
ssl
R$string.class 418B
AndroidSSLClient.class 8KB
R$layout.class 385B
AndroidSSLClient$3.class 1KB
AndroidSSLClient$2.class 1KB
R$drawable.class 391B
R.class 510B
AndroidSSLClient$1.class 2KB
R$attr.class 331B
R$id.class 509B
resources.ap_ 44KB
classes.dex 9KB
AndroidManifest.xml 752B
src
com
kortide
ssl
AndroidSSLClient.java 8KB
res
values
strings.xml 169B
layout
main.xml 1KB
raw
drawable
icon.png 20KB
.classpath 280B
gen
com
kortide
ssl
R.java 954B
assets
server.cer 763B
ssl.policy 52B
server.keystore.bks 1KB
cacerts.bks 54KB
共 44 条
- 1
zhenyongyuan123
- 粉丝: 152
- 资源: 58
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页