实     验    报     告

课程:Java   班级: 1352    姓名:黄坤    学号:20135226

成绩:               指导教师:娄嘉鹏        实验日期:2015.6.9

实验密级:           预习程度:              实验时间:15:30~18:00

仪器组次:26       必修/选修:选修        实验序号:04

实验名称: 网络编程与安全

实验目的与要求:

1.掌握Java网络编程的方法;

2.掌握Java安全编程的方法;

3.能综合使用各种技术。

实验仪器:

名称

型号

数量

计算机

2

实验内容:

1       编写网络通信程序(基于TCP)

2       对通信内容使用对称加密算法进行加密

3       使用非对称算法分发对称加密中使用的密钥

4       对通信内容进行摘要计算并验证

5       其他安全措施

相关代码

客户端:

package net;

import java.math.*;

import java.net.*;

import java.io.*;

public class tcpused {

public static void main(String srgs[]) {

try {

//创建连接特定服务器的指定端口的Socket对象

Socket socket = new Socket("10.0.6.143", 2224);

//获得从服务器端来的网络输入流

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

//获得从客户端向服务器端输出数据的网络输出W流

PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);

//创建键盘输入流,以便客户端从键盘上输入信息eredWriter(new OutputStreamWriter(socket.getOutputStream())), true);

//创建键盘输入流

BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));

System.out.print("请输入待发送的数据:");

String s = stdin.readLine(); //从键盘读入待发送的数据

String cs = new SEnc().enc(s);

System.out.println("发送到服务器的密文为:" + cs);

//            String t=Read.read();

String ck = new Enc_RSA().Enc();

System.out.println("发送到服务器的加密秘钥为:" + ck);

String result = DigestCalc.hash(s);

out.println(ck);

out.println(cs);  //通过网络传送到服务器

out.println(result);

} catch (Exception e) {

System.out.println(e);

} finally {

//stdin.close();

//in.close();

//out.close();

//socket.close();

}

}

}

服务器:

package net;

import java.net.*;

import java.io.*;

public class tcpuse {

public static void main(String srgs[]) throws Exception {

ServerSocket sc = null;

Socket socket = null;

try {

sc = new ServerSocket(2224);//创建服务器套接字

System.out.println("端口号:" + sc.getLocalPort());

System.out.println("服务器已经启动...");

socket = sc.accept();   //等待客户端连接

System.out.println("已经建立连接");

//获得网络输入流对象的引用

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

获得网络输出流对象的引用

PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);

String key = in.readLine();

System.out.println("从客户端收到的加密秘钥为:" + key);

byte[] keykb = new Dec_RSA().Dec(key);

String ctext = in.readLine();//读取客户端传送来的数据

System.out.println("从客户端收到的密文为:" + ctext);

String result=SDec.des(ctext, keykb);

String ha = in.readLine();

String sa = DigestCalc.hash(result);

boolean q = Compare.compare(sa, ha);

System.out.println("程序是否完整:" + q);

out.close();

in.close();

sc.close();

} catch (Exception e) {

System.out.println(e);

}

}

}

客户端:

服务端:

链接查看

统计时间

步骤

耗时(min)

百分比

需求分析

10

10%

设计

20

20%

代码实现

40

40%

测试

10

10%

分析总结

20

20%

二、实验中遇到的问题及其解决方法

在创建服务器后,客户端无法链接而出现的拒绝访问

解决方法:调整端点名保持一样

实验人员:

服务器 :20135226 黄坤

客户端  :20135326王亦可  http://www.cnblogs.com/baka/

三、实验体会

本次试验遇到一些困难,特别是编程方面,其他的都还好

java循环第四次处理_JAVA第四次实验相关推荐

  1. java循环导出word文档_Java使用freemarker导出word文档

    通过freemarker,以及JAVA,导出word文档. 共分为三步: 第一步:创建模板文件 第二步:通过JAVA创建返回值. 第三步:执行 分别介绍如下: 第一步: 首先创建word文档,按照想要 ...

  2. java 数据类型转换的一场_Java基础 — 四类八种基本数据类型

    整型:整数类型int 一般的数据. long 极大的数据. short 用于特定的场合,比如底层的文件处理或者需要控制占用存储单元空间量的大数组. byte 用于特定的场合,比如底层的文件处理或者需要 ...

  3. java+循环的时候用标签_java中循环标签的使用

    标签: 以前不知道在循环中可以使用标签.最近遇到后,举得还是有其独特的用处的.我这么说的意思是说标签在循环中可以改变循环执行的流程.而这种改变不是我们以前单独使用break或者是continue能够达 ...

  4. java循环语句有哪三类_java中的循环语句有哪些

    Java中有三种主要的循环结构: while 循环 do-while 循环 for 循环 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. 一.while循环 语 ...

  5. java中有哪些访问修饰符_java中四种访问修饰符

    Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量) public protected def ...

  6. java循环单链表比较相等_java的循环单链表

    packageclink;//循环单链表 public classTestClink {public static voidmain(String[] args) {//TODO Auto-gener ...

  7. java循环while之等差数列均值_java基础_while 循环语句的定义及用法

    一.while 循环语句的定义 在 C 语言中,while 循环是除了 for 循环外最常用的循环语句. 相对于 for 循环而言,while 循环更多地应用于循环次数未定的循环控制中. while ...

  8. java循环队列判断为空_Java - 可循环队列

    队列是一种特殊的线性表,是一种先进先出的数据结构.只允许在表的前端进行删除操作,在表的后端进行插入操作.进行插入操作的端称为队尾,进行删除操作的端称为队头.队列中没有元素时,称为空队列. 简单的循环队 ...

  9. java小游戏实训目的_Java弹球小游戏实验报告.doc

    Java弹球小游戏实验报告 滨江学院 Java程序设计实验报告 题 目 弹球小游戏 姓 名 许浩 学 号 20112346064 学 院 滨江学院 专 业 网络工程 年 级 2011级 指导教师 张舒 ...

  10. java把分数区分ABCD四个等级_java编程输入成绩的英文等级abcd输出对应的中文等级优秀良好及格不及格...

    int num=67;String str;if(num>=90){ str="优秀抄";}else if(num>=80){ str="优良袭"; ...

最新文章

  1. As3.0 一些好书连接
  2. SEO如何做会更受蜘蛛喜爱抓取,达到事半功倍的效果?
  3. 正确设置nginx/php-fpm/apache权限 提高网站安全性 防止被挂木马
  4. Hyper-V 虚拟机快照:常见问题
  5. rto净化效率计算公式_你了解废气处理设备RTO蓄热式热氧化炉的工作原理么?
  6. TD-SCDMA智能天线波束赋形能力的讨论
  7. win7系统图标异常修复方法
  8. 鼠标在某个控件上按下,然后离开后弹起,如何捕获这个鼠标弹起事件
  9. Hibernate 中upate,savaOrUpdate,merge的区别
  10. 移植gettimeofday
  11. pr2020lut导入_PS PR AE怎么批量导入LUTS调色预设
  12. 腾讯会议中用PPT放视频,视频没有声音
  13. wex5 tomcat配置php,WeX5 Tomcate 发布
  14. 颜色拾取器和红蜻蜓截图
  15. 发送候选文字到光标所在位置
  16. Ant工具 ant的安装与配置 ant作用
  17. 音视频SDK包-远程网络视频会议-在线远程教育-屏幕共享-电子白板-影音共享-在线直播等等都可以用
  18. 文本PDG文件名构成
  19. 给百度地图每个市添加颜色
  20. 优达棒球赛数据分析项目

热门文章

  1. Java数据结构——二叉树
  2. 使用bootstrap-table简化CRUD
  3. speex的基本编码和解码流程
  4. JS_简单倒计时_实例_格式:0 天 20 小时 48 分 54 秒
  5. array_filter移除空数组
  6. ugui 九宫格和图片切割
  7. Object中Equals和ReferenceEquals不解之谜
  8. 漫谈 Clustering (番外篇): Vector Quantization
  9. rpa打开浏览器_免费开源RPA财务机器人Taskt入门
  10. 拓端tecdat|matlab测量计算信号的相似度