实验名称

Java网络编程

实验内容

1.掌握Socket程序的编写;

2.掌握密码技术的使用;

3.设计安全传输系统。

结对小伙伴

20145120黄玄曦 博客地址:http://www.cnblogs.com/20145120hxx/p/5470921.html

实验步骤

1.我负责客户端,然后和结对小伙伴先匹配成功再将老师给的凯撒密码算法进行修改,编写代码实现。代码如下:

package experiment;

/**
* Created by lenovo on 2016/5/6.
*/
import java.io.*;
import java.net.*;
import java.util.*; public class Client {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
Socket socket = null;
InputStream is = null;
OutputStream os = null;
//服务器端IP地址
String serverIP = "222.28.131.142";
//服务器端端口号
int port = 10000;
//发送内容
String data;
String m[] = new String[2];
System.out.println("请输入明文:");
m[0] = scanner.nextLine();
System.out.println("请输入加密密钥");
m[1] = scanner.nextLine();
data = Caesar.main(m);
try {
//建立连接
socket = new Socket(serverIP,port);
//发送数据
os = socket.getOutputStream();
os.write(data.getBytes());
//接收数据
is = socket.getInputStream();
byte[] b = new byte[1024];
int n = is.read(b);
//输出反馈数据
System.out.println("服务器反馈:" + new String(b,0,n));
} catch (Exception e) {
e.printStackTrace(); //打印异常信息
}finally{
try {
//关闭流和连接
is.close();
os.close();
socket.close();
} catch (Exception e2) {}
}
}
}

然后进行加密



接下来接收到了服务器的反馈

2.这里我还是客户端。我们对娄老师给的RSA算法进行修改,然后编写代码实现,代码如下:

package experiment5;
import java.net.*;
import java.io.*;
import java.util.Scanner; public class Client1{
public static void main(String srgs[]) throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入明文:");
String m = scanner.nextLine();
String cs;
cs = Enc_RSA.main(m);
try {
//创建连接特定服务器的指定端口的Socket对象
Socket socket = new Socket("222.28.131.142",14512);
//获得从服务器端来的网络输入流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//获得从客户端向服务器端输出数据的网络输出流
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
//创建键盘输入流,以便客户端从键盘上输入信息
//BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); out.println(cs); //通过网络传送到服务器
cs = in.readLine();//从网络输入流读取结果
System.out.println( "从服务器接收到的结果为:"+ cs); //输出服务器返回的结果
}
catch (Exception e) {
System.out.println(e);
}
finally{
//stdin.close();
//in.close();
//out.close();
//socket.close();
}
}
}

输入明文进行加密,接收到了服务器的反馈:

实验总结

在实现RSA算法的时候出现了错误,找不到指定文件,后来将Skey_RSA_priv.dat和Skey_RSA_pub.dat两个文件放到与SRC同级的文件夹中问题才得到解决。还有我们要匹配的话需要连接到另一个小伙伴的wifi上才行。总而言之实验过程比较顺利。

实验代码托管截图

统计的PSP(Personal Software Process)时间

步骤 耗时 百分比
需求分析 1h 12.5%
设计 1h 12.5%
代码实现 3h 37.5%
测试 1h 12.5%
分析总结 2h 25.0%

20145122《 Java网络编程》实验五实验报告的更多相关文章

  1. 20145211 《Java程序设计》实验报告五————Java网络编程及安全实验报告

    实验内容 1.掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验步骤 这一部分是与我的partner合作的,详见他的博客- [20145326 <Java程序设计> ...

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

    20155227 <Java程序设计>实验五 Java网络编程及安全实验报告 实验内容 任务一: 编写MyBC.java实现中缀表达式转后缀表达式的功能. 编写MyDC.java实现从上面 ...

  3. 20155305 2016-2017-2 《Java程序设计》 实验五 Java网络编程及安全实验报告

    20155305 2016-2017-2 <Java程序设计> 实验五 Java网络编程及安全实验报告 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传 ...

  4. 20145219 《Java程序设计》实验五 Java网络编程及安全实验报告

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

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

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

  6. Java 网络编程(五) 使用TCP/IP的套接字(Socket)进行通信

    链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/10/2952616.html 使用TCP/IP的套接字(Socket)进行通信 套接字Socke ...

  7. 20145326 《Java程序设计》实验五——Java网络编程及安全实验报告

    实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 我和20145211黄志远http://www.cnblogs.com/nostalgia-/组 ...

  8. java 网络编程(五)Socket多线程上传文件

    客户端: package cn.sasa.socketUploadFileDemo; import java.io.FileInputStream; import java.io.IOExceptio ...

  9. 如何使用socket进行java网络编程(五)

    本篇记录: 1.再谈readLine()方法 2.什么是真正的长连接 最近又参与了一个socket的项目,又遇到了老生常谈的readLine()问题:对方通过其vb程序向我方socketServer程 ...

  10. java 网络编程(五)----TCP进阶篇上传文本文件

    设计需求:从客户端上传txt文件到服务器,服务端收到文件后,发送消息给客户端接收完成. 1. 服务器端: public class UpLoadFileServer { public static v ...

随机推荐

  1. Spark集群高可用HA配置

    本文中的Spark集群包含三个节点,分别是Master,Worker1,Worker2. 1.在Master机器上安装Zookeeper,本文安装在/usr/etc目录下 2.在Master机器配置Z ...

  2. Linux:发行版安装包的下载地址

    1.Linux发行版网址 发行版 http://distrowatch.com Linux发行版信息大全 Ubuntu http://www.ubuntu.com 官网 http://cdimage. ...

  3. 坐标转换convertRect

    // 目标view的直接父viwe                    目标view                                   要转换到的view [self.backgr ...

  4. CentOS关闭防火墙&SELinux

    须知: 防火墙配置文件:/etc/sysconfig/iptables 查看防火墙状态:service iptables status 关闭防火墙:service iptables stop 关闭ip ...

  5. URAL 1517 Freedom of Choice (后缀数组 输出两个串最长公共子串)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/whyorwhnt/article/details/34075603 题意:给出两个串的长度(一样长) ...

  6. vue-watch

    <template> <div> <!-- 监听值的改变: --> <button class="th" @click="add ...

  7. AMR格式语音采集/编码/转码/解码/播放

    1.opencore-amr源码下载 https://sourceforge.net/projects/opencore-amr/files/opencore-amr/ 2.opencore-amr编 ...

  8. [py]django第三方分页器django-pure-pagination实战

    第三方分页模块: django-pure-pagination 是基于django的pagination做的一款更好用的分页器 参考 配置django-pure-pagination模块 安装 pip ...

  9. storm介绍,核心组件,编程模型

    一.流式计算概念 利用分布式的思想和方法,对海量“流”式数据进行实时处理,源自业务对海量数据,在“时效”的价值上的挖掘诉求,随着大数据场景应用场景的增长,对流式计算的需求愈发增多,流式计算的一般架构图 ...

  10. [LeetCode] 112. Path Sum_Easy tag: DFS

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...