服务器端

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();

java网络编程5-SSL的更多相关文章

  1. Java - 网络编程完全总结

    本文主要是自己在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,介绍Java中的网络编程. 一.概述 ...

  2. 【转载】Java 网络编程

      本文主要是自己在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,介绍Java中的网络编程. 一. ...

  3. Java网络编程和NIO详解9:基于NIO的网络编程框架Netty

    Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introd ...

  4. Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)

    本文转载 https://www.javadoop.com 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.c ...

  5. 20145205 《Java程序设计》实验报告五:Java网络编程及安全

    20145205 <Java程序设计>实验报告五:Java网络编程及安全 实验要求 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.客户端中输入明文,利用DES算法加密,D ...

  6. Java 网络编程学习总结

    新手一枚,Java学习中,把自己学习网络编程的知识总结一下,梳理下知识,方便日后查阅,高手莫进. 本文的主要内容: [1]    网络编程认识                [2]  TCP/IP编程 ...

  7. 20145212 实验五《Java网络编程》

    20145212 实验五<Java网络编程> 一.实验内容 1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成 ...

  8. 20145213《Java程序设计》实验五Java网络编程及安全

    20145213<Java程序设计>实验五Java网络编程及安全 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传输系统. 实验预期 1.客户端与服务器 ...

  9. 20145206《Java程序设计》实验五Java网络编程及安全

    20145206<Java程序设计>实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 我和201451 ...

  10. 20145337实验五Java网络编程及安全

    20145337实验五Java网络编程及安全 实验内容 掌握Socket程序的编写 掌握密码技术的使用 设计安全传输系统 实验步骤 基于Java Socket实现安全传输 基于TCP实现客户端和服务器 ...

随机推荐

  1. Android 如何增大开机铃声 M

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  2. Unity3D Gamecenter 得分上传失败的处理

    Unity3DGamecenter 得分上传失败的处理. 常常会有种情况是,玩家在地铁或者飞机上没法通过wifi或者3G连接到服务器,从而会导致上传分数失败 解决方法: 这时候需要把得分存在Playe ...

  3. 五中不同的思路输出helloword

    五中不同的思路输出helloword -- 我也不知道了--

  4. Maven的镜像设置

    文件位置 国内的阿里云 <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven< ...

  5. 利用docker创建支持centos的ssh镜像

    创建docker镜像需要基础镜像,目前官方已提供了多种基础镜像,参见: https://hub.docker.com/explore/ 要想创建支持centos的ssh镜像,就需要以centos镜像为 ...

  6. easyui tree自定义属性用法

    easyui为树显示提供了以下属性, id:节点id,这个很重要到加载远程服务器数据 which is important to load remote data text: 显示的节点文本 stat ...

  7. VSCode集成Git代码管理

    一.安装和配置VSCode与Git 1.下载Git并安装: https://git-scm.com/download/ 2.下载VSCode并进行安装: https://code.visualstud ...

  8. 转: Tsung:开源多协议分布式负载&压力测试工具

    Main features High Performance: the load can be distributed on a cluster of client machines Multi-pr ...

  9. python--文件处理范例

    import os,os.path,string dir="D:\\curl\\data" if (os.path.exists(dir)==False): print " ...

  10. Linux上寻找并杀死僵尸进程

    转载: http://blog.csdn.net/shanzhizi/article/details/47320595 linux服务器上,多少会出现一些僵尸进程,下面介绍如何快速寻找和消灭这些僵尸进 ...