以 Android10 - OkHttp 的实现为例。
因为 OkHttp 的实现与Android的版本有关。
在Android 10 及以上,SSLSocket 的实现类是 Java8EngineSocket,这个打个断点就能看出来。
SSLSocket 的使用
SSLSocket 只是在 Socket 的基础上套了一层加密。所以,它的用法与 Socket 也差不多,看一个例子:
public static void sslSocket2() throws Exception {
SSLContext context = SSLContext.getInstance("SSL");
// 初始化
context.init(null,
new TrustManager[] { new Test2.MyX509TrustManager() },
new SecureRandom());
SSLSocketFactory factory = context.getSocketFactory();
SSLSocket s = (SSLSocket) factory.createSocket("localhost", 10002);
System.out.println("ok");
OutputStream output = s.getOutputStream();
InputStream input = s.getInputStream();
output.write("alert".getBytes());
System.out.println("sent: alert");
output.flush();
byte[] buf = new byte[1024];
int len = input.read(buf);
System.out.println("received:" + new String(buf, 0, len));
}
这里,我们使用 SSLSocket 发送了一个 alert 字符串。
server 端接收如下:
public static void sslSocketServer() throws Exception {
...
// 监听和接收客户端连接
SSLServerSocketFactory factory = context.getServerSocketFactory();
SSLServerSocket server = (SSLServerSocket) factory
.createServerSocket(10002);
System.out.println("ok");
Socket client = server.accept();
System.out.println(client.getRemoteSocketAddress());
&

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



