Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 295|回复: 0

[网络编程学习]考试作弊程序

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-1 00:01:07 | 显示全部楼层 |阅读模式
    又要考试了,学习不好,只能靠同学给答案,共享的话怕老师看见了,突然想到搞一段小代码来发送答案。
       特点:取得本机ip,然后根据本机ip尝试连接本机所在网段(例:192.168.132.*)的所有ip,连接成功后开始监听固定盘符下的固定文件(跟同学说好的),当发现该文件(也就是同学做完了将答案打包放在指定盘符下),立即发送!

    只要在刚开始考试的时候运行起来就不用管了。
    一、用于发送的S.java
    1. import java.io.File;
    2. import java.io.FileInputStream;
    3. import java.io.IOException;
    4. import java.io.InputStream;
    5. import java.io.OutputStream;
    6. import java.net.InetSocketAddress;
    7. import java.net.Socket;
    8. import java.net.InetAddress;
    9. import java.net.UnknownHostException;
    10. import java.net.UnknownHostException;
    11. // 发送端
    12. public class S {
    13. private static String localIp = null;  // 本机ip
    14. private static String ip = "10.10.1";  // 网段 默认
    15. private static int port = 8888;  // 连接端口
    16. private static final File FILE = new File("d:\1.zip");  // 监听发送的文件
    17. private static int count = 1; // ip的自增
    18.        
    19. static {
    20.    try {
    21.      localIp = InetAddress.getLocalHost().getHostAddress().toString();  // 得到本机ip,可以吗?
    22.      if(null != localIp) {
    23.       ip = localIp.substring(0, localIp.lastIndexOf(".")) + "."; // 根据本机ip得到所在网段
    24.      }
    25.     } catch(UnknownHostException e) {}
    26.   }
    27.        
    28.   public static void main(String[] args) {
    29.     boolean flag = true;
    30.     Socket socket = null;
    31.                
    32.     // 循环尝试连接,直到连接成功
    33.     while(flag) {
    34.      if(count > 255) {  // 如果ip最后一位超过255 则重新计数
    35.        count = 1;
    36.      }
    37.      try {
    38.        System.out.println("尝试连接" + ip+count);
    39.        //socket = new Socket(ip+count, port);
    40.        socket = new Socket();
    41.        socket.connect(new InetSocketAddress(ip+count, port), 4000);  // 尝试连接,最长尝试4s
    42.      } catch (UnknownHostException e) {
    43.        count++;  // 如果连接不上则ip最后一位加1,继续连接
    44.        continue;
    45.      } catch (IOException e) {
    46.        count++;
    47.        continue;
    48.      }
    49.      System.out.println("已连接");
    50.       break;
    51.     }
    52.                
    53.     // 循环监听文件,直到发现文件
    54.     while(flag) {
    55.       if(FILE.exists()) {
    56.         System.out.println("发现文件");
    57.         break;
    58.       }       
    59.      try {
    60.         Thread.sleep(1000);
    61.      } catch (InterruptedException e) {
    62.         e.printStackTrace();
    63.      }
    64.     }
    65.                
    66.     // 发送文件
    67.      if(null != socket) {
    68.        try {
    69.          OutputStream out = socket.getOutputStream();
    70.          InputStream in = new FileInputStream(FILE);
    71.          byte[] by = new byte[512];
    72.          int len = 0;
    73.          while(-1!=(len=in.read(by))) {
    74.            out.write(by, 0, len);
    75.          }
    76.          out.flush();
    77.          out.close();
    78.          in.close();
    79.          System.out.println("发送成功");
    80.        } catch (IOException e) {
    81.          e.printStackTrace();
    82.        }
    83.      }
    84.    }
    85. }
    复制代码
    二、用于接受的R.java
    1. import java.io.File;
    2. import java.io.FileOutputStream;
    3. import java.io.IOException;
    4. import java.io.InputStream;
    5. import java.io.OutputStream;
    6. import java.net.ServerSocket;
    7. import java.net.Socket;
    8. // 接收端
    9. public class R implements Runnable {
    10.   private Socket socket = null;
    11.   private File file = new File("d:\2.zip");  // 接收到保存的文件
    12.        
    13.   public R(Socket socket) {
    14.     this.socket = socket;
    15.     if(!file.getParentFile().exists()) {
    16.       file.getParentFile().mkdirs();  // 创建目录
    17.     }
    18.    }
    19.        
    20.   @Override
    21.   public void run() {
    22.     System.out.println("已连接");
    23.     try {
    24.       InputStream in = socket.getInputStream();
    25.       OutputStream out = new FileOutputStream(this.file);
    26.       byte[] by = new byte[512];
    27.       int len = 0;
    28.       while(-1!=(len=in.read(by))) {
    29.         out.write(by, 0, len);
    30.       }
    31.       out.flush();
    32.       out.close();
    33.       in.close();
    34.       System.out.println("接受完毕");
    35.     } catch (IOException e) {
    36.       e.printStackTrace();
    37.     } finally {
    38.       try {
    39.         socket.close();
    40.       } catch (IOException e) {
    41.         e.printStackTrace();
    42.       }
    43.     }
    44.    }
    45.        
    46.    public static void main(String[] args) {
    47.      try {
    48.       ServerSocket server = new ServerSocket(8888);
    49.       boolean flag = true;
    50.       while(flag) {
    51.         new Thread(new R(server.accept())).start();  // 阻塞
    52.       }
    53.      } catch (IOException e) {
    54.        e.printStackTrace();
    55.      }
    56.   }
    57. }
    复制代码
    三、运行
    在两台电脑上分别运行。
    java R与java S
    经测试,成功!

       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/11/1/000107421.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-26 01:56 , Processed in 0.478534 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表