北京电子科技学院(BESTI)

实验报告

课程:Java程序与设计         班级:1352

姓名:王玥

学号:20135232

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

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

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

实验名称:Java网络编程及安全

实验目的与要求:结对编程,实现客户端和服务器之间数据的发送与接收,实现加解密和验证Hash函数值。

实验仪器:

名称

型号

数量

PC

TOSHIBA

1

Eclipse

LUNA

1

【实验内容】

1.用书上的TCP代码,实现服务器与客户端。

2.客户端与服务器连接

3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务器的公钥加密,计算明文的Hash函数值,一起传送给客户端

4.客户端用RSA公钥密码中服务器的私钥解密DES的,秘钥,用秘钥对密文进行解密,得出明文。计算求得明文的Hash函数值,检查是否与传送过来的一致,如果一直,则表示匹配成功。

【实验步骤】

我负责服务器的部分。

首先建立一个Socket对象,用来连接特定服务器的指定端口,输入的参数是ip地址和端口,注意ip地址是服务器的ip地址,即运行服务器的那台主机的ip地址。

怎么查看主机的ip地址呢?在命令行中输入ipconfig即可。如下图所示:

然后用BufferedReader对象获得从服务器传来的网络输入流,用PrintWriter对象获得从客户端向服务器输出数据的网络输出流,用BufferedReader对象创建键盘输入流,以便客户端从键盘上输入信息。以上根据TCP的客户端代码编写。

下一步是先用RSA算法加密DES的秘钥,加密采用服务器的公钥。将加密后的秘钥传送给服务器。

然后用DES算法加密明文,将密文传到服务器。

然后计算明文的Hash函数值,传送给服务器。

以上用到的加密算法、秘钥、Hash函数计算过程均利用的老师提供的代码。

最后从网络输入流读取结果,把从服务端返回的结果输出出来。

在抛出异常部分,因为继承的是Exception类,所以直接输出抛出的异常。

代码写好后,先运行服务器,再运行客户端,显示“服务器已经启动后”启动客户端,,连接成功会显示“已经建立连接”,然后就可以从客户端输入数据发送到服务器了。

服务器代码:

import java.io.BufferedInputStream;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.net.ServerSocket;

import java.net.Socket;

import java.security.SecureRandom;

import javax.crypto.Cipher;

import javax.crypto.SecretKey;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.DESKeySpec;

public class ServerTest {

int port = 8821;

void start() {

Socket s = null;

try {

ServerSocket ss = new ServerSocket(port); //创建一个ServerSocket套接字对象,并绑定在8821端口上

while (true) {

// 选择进行传输的文件

String filePath = "C:\\Users\\田雨晴\\Desktop\\服务器\\jiami.txt";

File fi = new File(filePath); //通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例

System.out.println("文件长度:" + (int) fi.length());

s = ss.accept();

System.out.println("建立socket链接");

DataInputStream dis = new DataInputStream(new BufferedInputStream(s.getInputStream())); //DataInputStream:使用指定的底层 InputStream 创建一个 DataInputStream;

dis.readByte(); //返回此输入流的下一个字节,以有符号 8 位 byte 的形式表示。

DataInputStream fis = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath)));

DataOutputStream ps = new DataOutputStream(s.getOutputStream());//创建一个新的数据输出流,将数据写入指定基础输出流

ps.writeUTF(fi.getName());

ps.flush();

ps.writeLong((long) fi.length());

ps.flush();

int bufferSize = 8192;//缓冲区,1k

byte[] buf = new byte[bufferSize];

while (true) {

int read = 0;

if (fis != null) {

read = fis.read(buf);

}

if (read == -1) {

break;

}

ps.write(buf, 0, read);

}

ps.flush();// 直到socket超时,导致数据不完整。

fis.close();

s.close();

System.out.println("文件传输完成");

}

} catch (Exception e) {

e.printStackTrace();

}

【实验体会】

这次实验主要是练习在已有的代码之上如何把功能在同一个程序中实现,老师在实验之前已经给了TCP的代码和密码算法的加解密方法,这给我们的编程带来了极大的方便,所以我们要做的就是熟悉这些代码所代表的含义,内化成自己的东西并能够掌握运用。

【实验过程中遇到的问题以及解决方案】

这次实验中我主要遇到了两个问题,其一是如何将代码整合到一起,其二是如何实现服务器与客户端的连接。我们通过命令行得到了正确的ip地址,终于成功的实现了连接。

原文:http://www.cnblogs.com/disturbia/p/4565586.html

java小球碰撞实验报告_实验五 Java网络编程及安全 实验报告 20135232王玥相关推荐

  1. java小球碰撞实验报告_20155317 《Java程序设计》实验五网络编程与安全实验报告...

    20155317 <Java程序设计>实验五网络编程与安全实验报告 遇到问题 在刚开始启动客户端或者服务端时,出现了一系列的错误情况,总是提示异常信息 后来经过询问同学,反应将端口号修改一 ...

  2. 20165230 《Java程序设计》实验五《网络编程与安全》实验报告

    20165230 <Java程序设计>实验五<网络编程与安全>实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: ...

  3. 疯狂java实验五数据流编程_2017-2018-2 20165209 实验五《网络编程与安全》实验报告...

    2017-2018-2 20165209 实验五<网络编程与安全>实验报告 实验报告封面 北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1652 姓名:陈思 ...

  4. java的网络编程设计报告_20165230 《Java程序设计》实验五《网络编程与安全》实验报告...

    20165230 <Java程序设计>实验五<网络编程与安全>实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: ...

  5. 实验五 Java网络编程及安全 实验报告 20135232王玥

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序与设计         班级:1352 姓名:王玥 学号:20135232 成绩:             指导 ...

  6. 2017-2018-2 20165301 实验五《网络编程与安全》实验报告

    2017-2018-2 20165301 实验五<网络编程与安全>实验报告 一.网络编程与安全-1 实验要求: 参考http://www.cnblogs.com/rocedu/p/6766 ...

  7. 2018-2019-2 20175204 张湲祯 实验五《网络编程与安全》实验报告

    2018-2019-2 20175204 张湲祯 实验五<网络编程与安全>实验报告 实验五<网络编程与安全> 一.实验内容: 1.网络编程与安全-1 任务详情 两人一组结对编程 ...

  8. 大学计算机实验图灵机模型与计算机硬件,北理大学计算机实验基础 实验一_图灵机模型与计算机硬件系统虚拟拆装-实验报告...

    1.1实验一实验一 图灵机模型与计算机硬件系统虚拟拆装图灵机模型与计算机硬件系统虚拟拆装五.实验报告五.实验报告2222实验名称:学号 姓名 班级: 实验时间:年 月 日 实验报告表 1-1 图灵机模 ...

  9. 2018-2019-2 20175227张雪莹《Java程序设计》实验五 《网络编程与安全》

    2018-2019-2 20175227张雪莹<Java程序设计> 实验五 <网络编程与安全> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号:20 ...

最新文章

  1. 第2周项目2程序的多文件组织
  2. android开发中,可能会导致内存泄露的问题
  3. 如何在阅读参考文献时,有效率的做笔记?
  4. js(Dom+Bom)第二天(1)
  5. 计算机主板各模块复位,电脑主板复位电路工作原理分析
  6. IE8 打开网站首页显示的却是手机网站
  7. socket地址API
  8. schedule和scheduleAtFixedRate
  9. linux挂在Windows操作系统共享文件夹
  10. 最短路之floy算法
  11. pandas.DataFrame.sample随机抽样
  12. 使用Scratch3和ROS进行机器人图形化编程学习
  13. AD域服务器作用及好处
  14. 天龙八部八部显示服务器堵塞,天龙八部服务端各目录说明
  15. ROS机器人学习历程三:Publisher 和Subscriber
  16. Nginx服务详细篇从基础到反向代理和负载均衡
  17. ceph 监控--calamari
  18. Python 判断无向图是否存在环
  19. freertos空闲任务、阻塞延时
  20. 其他的一些生活小常识

热门文章

  1. 56微程序控制器的组成和工作过程
  2. luogu 4710 「物理」平抛运动
  3. easyUI整合富文本编辑器KindEditor详细教程
  4. 关于分立的红外接收管一点需要记录的
  5. 为什么很多企业都在上云?云服务器到底有哪些优势?
  6. C语言使用libpcap输出报文到pcap文件
  7. 微积分之重积分超详细知识框架
  8. 如何在一长字符串中提取出所有数字?
  9. 500kW储能变流器(PCS)采用T型三电平模块,结构三维、控制电路、
  10. Apache2.4.37+mysql5.7+PHP7.31最新版LAMP架构+Discuz论坛