編輯:關於android開發
Android的私鑰和信任證書的格式必須是BKS格式的,通過配置本地JDK,讓keytool可以生成BKS格式的私鑰和信任證書,java本身沒有BouncyCastle密庫。
服務端:
Java代碼
public class SSLServer {
private static final int SERVER_PORT = 50030;
private static final String SERVER_KEY_PASSWORD = "123456";
private static final String SERVER_AGREEMENT = "TLS";//使用協議
private static final String SERVER_KEY_MANAGER = "SunX509";//密鑰管理器
private static final String SERVER_KEY_KEYSTORE = "JKS";//密庫,這裡用的是Java自帶密庫
private static final String SERVER_KEYSTORE_PATH = "src/data/kserver.keystore";//密庫路徑
private SSLServerSocket serverSocket;
public static void main(String[] args) {
SSLServer server = new SSLServer();
server.init();
server.start();
}
//由於該程序不是演示Socket監聽,所以簡單采用單線程形式,並且僅僅接受客戶端的消息,並且返回客戶端指定消息
public void start() {
if (serverSocket == null) {
System.out.println("ERROR");
return;
}
while (true) {
try {
System.out.println("Server Side......");
Socket s = serverSocket.accept();
InputStream input = s.getInputStream();
OutputStream output = s.getOutputStream();
BufferedInputStream bis = new BufferedInputStream(input);
BufferedOutputStream bos = new BufferedOutputStream(output);
byte[] buffer = new byte[20];
bis.read(buffer);
System.out.println(new String(buffer));
bos.write("This is Server".getBytes());
bos.flush();
s.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
public void init() {
try {
//取得SSLContext
SSLContext ctx = SSLContext.getInstance(SERVER_AGREEMENT);
//取得SunX509私鑰管理器
KeyManagerFactory kmf = KeyManagerFactory.getInstance(SERVER_KEY_MANAGER);
//取得JKS密庫實例
KeyStore ks = KeyStore.getInstance(SERVER_KEY_KEYSTORE);
//加載服務端私鑰
ks.load(new FileInputStream(SERVER_KEYSTORE_PATH),
SERVER_KEY_PASSWORD.toCharArray());
//初始化
kmf.init(ks, SERVER_KEY_PASSWORD.toCharArray());
//初始化SSLContext
ctx.init(kmf.getKeyManagers(),null, null);
//通過SSLContext取得ServerSocketFactory,創建ServerSocket
serverSocket = (SSLServerSocket) ctx.getServerSocketFactory
().createServerSocket(SERVER_PORT);
} catch (Exception e) {
System.out.println(e);
}
}
}
上次講解Android的藍牙基本用法,這次講得深入些,探討下藍牙方面的隱藏API。用過Androi
編譯器開發系列--Ocelot語言1.抽象語法樹,--ocelot語法從今天開始研究開發自己的編程語言Ocelot,從《自制編譯器》出發,然後再自己不斷完善功能並優化。
Android 顯示意圖激活另外一個Actitity,androidactitity1、跳轉到一個新的Actitity 新建項目, 新建一個java類Other
Android消息機制之Handler,androidhandlerAndroid為什麼要提供Handler Android建議我們不要在UI線程中執行耗時操作,因為這很