java网络编程5-SSL
服务器端
System.out.println("等待客户端连接..."); File keyFile=new File("C:/Users/mu/Desktop/mu.p12"); InputStream stream=new FileInputStream(keyFile); char[] password="123456".toCharArray(); //KeyStore用于存放证书,创建对象时 指定交换数字证书的加密标准 KeyStore keyStore=KeyStore.getInstance("pkcs12"); //KeyStore.getInstance(KeyStore.getDefaultType()); keyStore.load(stream, password); stream.close(); //KeyManager选择证书证明自己的身份 KeyManagerFactory keyManagerFactory=KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); keyManagerFactory.init(keyStore,password); KeyManager[] keyManagers=keyManagerFactory.getKeyManagers(); //TrustManager决定是否信任对方的证书 TrustManagerFactory trustManagerFactory=TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(keyStore); TrustManager[] trustManagers=trustManagerFactory.getTrustManagers(); SSLContext context=SSLContext.getInstance("SSL"); context.init(keyManagers, trustManagers, null); SSLServerSocketFactory factory=context.getServerSocketFactory(); SSLServerSocket serverSocket=(SSLServerSocket)factory.createServerSocket(3344); SSLSocket socket=(SSLSocket)serverSocket.accept(); System.out.println("有客户端连接"); System.out.println("向客户端输出信息"); OutputStream outputStream=socket.getOutputStream(); BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(outputStream)); writer.write("hello world\r\n"); writer.write("\r\n"); writer.flush(); System.out.println("输出结束"); socket.close(); serverSocket.close();
客户端
System.out.println("准备连接服务端"); File keyFile=new File("C:/Users/mu/Desktop/mu.p12"); InputStream stream=new FileInputStream(keyFile); char[] password="123456".toCharArray(); //指定交换数字证书的加密标准 KeyStore keyStore= KeyStore.getInstance("pkcs12");//KeyStore.getInstance(KeyStore.getDefaultType()); keyStore.load(stream, password); stream.close(); //TrustManager决定是否信任对方的证书 TrustManagerFactory trustManagerFactory=TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(keyStore); TrustManager[] trustManagers=trustManagerFactory.getTrustManagers(); SSLContext context=SSLContext.getInstance("SSL"); context.init(null, trustManagers, null); SSLSocketFactory factory=context.getSocketFactory(); SSLSocket socket=(SSLSocket) factory.createSocket("localhost", 3344); InputStream inputStream=socket.getInputStream(); BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream)); String str=null; while ((str=reader.readLine())!=null) { if(str.equals("")) break; System.out.println(str); } socket.close();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2013-10-31 js之dom_2
2013-10-31 js之dom_1