iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >利用java 怎么在局域网中进行文件传输
  • 694
分享到

利用java 怎么在局域网中进行文件传输

java局域网ava 2023-05-31 09:05:03 694人浏览 薄情痞子
摘要

利用java 怎么在局域网中进行文件传输?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java 实现局域网文件传输ClientFile.java package&nb

利用java 怎么在局域网中进行文件传输?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

java 实现局域网文件传输

ClientFile.java

 package com.tcp.file;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;import java.net.UnknownHostException;import javax.swing.JProgressBar;public class ClientFile extends Thread {  private static String ip;  private static int port;  private String filepath;  private long size;  private JProgressBar jprogressbar;  public ClientFile(String ip, int port, String filepath, JProgressBar jprogressbar) {    this.ip = ip;    this.port = port;    this.filepath = filepath;    this.jprogressbar = jprogressbar;  }  public void run() {    try {      Socket socket = new Socket(ip, port);      InputStream input = socket.getInputStream();      OutputStream output = socket.getOutputStream();      File file = new File(filepath);      // 第一次传输文件名字and文件的大小      String str1 = file.getName() + "\t" + file.length();      output.write(str1.getBytes());      output.flush();      byte[] b = new byte[100];      int len = input.read(b);      String s = new String(b, 0, len);      // 如果服务器传输过来的是ok那么就开始传输字节      if (s.equalsIgnoreCase("ok")) {        long size = 0;        jprogressbar.setMaximum((int) (file.length() / 10000));// 设置进度条最大值        FileInputStream fin = new FileInputStream(file);        byte[] b1 = new byte[1024 * 1024 * 2];        while (fin.available() != 0) {          len = fin.read(b1);          output.write(b1, 0, len);          output.flush();          size += len;          jprogressbar.setValue((int) (size / 10000));        }        if (fin.available() == 0) {          javax.swing.JOptionPane.showMessageDialog(null, "传输完毕!即将推出......");          try {            Thread.sleep(1500);            System.exit(0);          } catch (InterruptedException e) {            e.printStackTrace();          }        }        output.close();        fin.close();        socket.close();      } else {        // 传输的不是ok那么就弹出个信息框对方拒绝        javax.swing.JOptionPane.showMessageDialog(null, "对方拒绝接收此数据!");      }    } catch (IOException e) {      javax.swing.JOptionPane.showMessageDialog(null, "IOException");    }  }}

ServerFile.java

 package com.tcp.file;import java.io.*;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.InetAddress;import java.net.ServerSocket;import java.net.Socket;import javax.swing.JFileChooser;import javax.swing.JOptionPane;import javax.swing.JProgressBar;public class ServerFile extends Thread {  private Socket socket;  private JProgressBar jprogressbars;  public ServerFile(Socket socket, JProgressBar jprogressbars) {    this.socket = socket;    this.jprogressbars = jprogressbars;  }  public void run() {    try {      InputStream input = socket.getInputStream();      OutputStream output = socket.getOutputStream();      byte[] b = new byte[100];      int len = input.read(b);      String ss = new String(b, 0, len);      String[] str1 = ss.split("\t");// 把接收到的信息按制表符拆分      String filename = str1[0];// 起始位文件名称      String filesize = str1[1];// 下标1位文件的大小      long size = Long.parseLong(filesize);      InetAddress ip = socket.getInetAddress();// 得到发送端的IP      int port = socket.getPort();// 得到发送端的端口      long s = size / 1024 / 1024;      String name = " M";      if (s < 1) {        s = (size / 1024);        name = " K";      } else if (s > 1024) {        float s1 = size / 1024 / 1024;        s = (size / 1024 / 1024 / 1024);        name = " G多";      }      // 弹出确认款,显示对方的ip端口以及文件的名称和大小是否需要接收      int i = JOptionPane.showConfirmDialog(null,          "来自: " + ip + ":" + port + "\n文件名称: " + filename + "\n文件大小: " + s + name);      // 如果点击确认      if (i == JOptionPane.OK_OPTION) {        // 那么传输ok给发送端示意可以接收        output.write("ok".getBytes());        output.flush();        JFileChooser jf = new JFileChooser();        // 存储到本地路径的夹子        jf.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);        jf.showOpenDialog(null);        jprogressbars.setMaximum((int) (size / 10000));        FileOutputStream fout = new FileOutputStream(new File(jf.getSelectedFile(), filename));        b = new byte[1024 * 1024 * 2];        long size1 = 0;        while ((len = input.read(b)) != -1) {          fout.write(b, 0, len);          size1 += len;          jprogressbars.setValue((int) (size1 / 10000));        }        fout.close();        input.close();        socket.close();      } else {        // 否不接收此文件        output.write("no".getBytes());        output.flush();      }    } catch (IOException e) {      javax.swing.JOptionPane.showMessageDialog(null, "IOException");    }  }  private static ServerSocket server = null;  // 启动服务器  public static void openServer(int port, JProgressBar jprogressbar) throws Exception {    new Thread() {      public void run() {        try {          if (server != null && !server.isClosed()) {            server.close();          }          server = new ServerSocket(port);          new ServerFile(server.accept(), jprogressbar).start();        } catch (IOException e) {          javax.swing.JOptionPane.showMessageDialog(null, "IOException");        }      }    }.start();  }  // 关闭服务器  public static void closeServer() {    try {      server.close();    } catch (IOException e) {      javax.swing.JOptionPane.showMessageDialog(null, "IOException");    }  }}

SocketFileJFrame.java

 package com.tcp.file;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.EventQueue;import java.awt.Image;import java.awt.Toolkit;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import java.awt.Color;import javax.swing.JTabbedPane;import java.awt.Panel;import javax.swing.border.TitledBorder;import javax.swing.UIManager;import javax.swing.border.CompoundBorder;import javax.swing.JLabel;import java.awt.Font;import javax.swing.JTextField;import javax.swing.JToggleButton;import javax.swing.JProgressBar;import javax.swing.JButton;import javax.swing.JFileChooser;import javax.swing.event.AncestorListener;import javax.swing.event.AncestorEvent;import java.awt.event.ActionListener;import java.io.IOException;import java.awt.event.ActionEvent;public class SocketFileJFrame extends JFrame {  private JPanel contentPane;  private JTextField textField;  private JTextField textField_1;  private JTextField textField_2;  private JTextField textField_3;  private JProgressBar progressBar_2;    public static void main(String[] args) {    EventQueue.invokeLater(new Runnable() {      public void run() {        try {          SocketFileJFrame frame = new SocketFileJFrame();          frame.setVisible(true);        } catch (Exception e) {          e.printStackTrace();        }      }    });  }    public SocketFileJFrame() {    setIconImage(Toolkit.getDefaultToolkit()        .getImage(SocketFileJFrame.class.getResource("/javax/swing/plaf/metal/icons/ocean/newFolder.gif")));    setForeground(Color.WHITE);    setResizable(false);    setTitle("局域网文件传输 V1.0");    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    int width = Toolkit.getDefaultToolkit().getScreenSize().width;//获取分辨率宽    int heiht = Toolkit.getDefaultToolkit().getScreenSize().height;//获取分辨率高    //分辨率宽高减去软件的宽高除以2把软件居中显示    setBounds((width - 747) / 2, (heiht - 448) / 2, 738, 472);    contentPane = new JPanel();    contentPane.setBackground(Color.WHITE);    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));    setContentPane(contentPane);    contentPane.setLayout(null);    JPanel panel_1 = new JPanel();    panel_1.setToolTipText("");    panel_1.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"),        "\u6587\u4EF6\u63A5\u6536\u670D\u52A1\u5668", TitledBorder.LEADING, TitledBorder.TOP, null,        new Color(0, 0, 0)));    panel_1.setBackground(Color.WHITE);    panel_1.setBounds(39, 28, 652, 119);    contentPane.add(panel_1);    panel_1.setLayout(null);    JLabel label = new JLabel("\u7AEF\u53E3:");    label.setFont(new Font("新宋体", Font.PLAIN, 22));    label.setBounds(26, 31, 66, 35);    panel_1.add(label);    //端口文本框    textField = new JTextField();    textField.setFont(new Font("宋体", Font.PLAIN, 19));    textField.setText("8080");    textField.setBounds(89, 36, 126, 26);    panel_1.add(textField);    textField.setColumns(10);    //服务器关闭启动的按钮    JToggleButton tglbtnNewToggleButton = new JToggleButton("\u542F\u52A8\u670D\u52A1\u5668");    tglbtnNewToggleButton.addActionListener(new ActionListener() {      public void actionPerfORMed(ActionEvent e) {        if (tglbtnNewToggleButton.isSelected()) {          //如果是按下显示关闭服务器          tglbtnNewToggleButton.setText("关闭服务器");          textField.setEnabled(false);//按下之后 端口文本框要设置不能写入          try {            //启动服务器            ServerFile.openServer(Integer.parseInt(textField.getText())                , progressBar_2);          } catch (Exception e1) {            javax.swing.JOptionPane.showMessageDialog(null, "Exception");          }        } else {          //否启动服务器          tglbtnNewToggleButton.setText("启动服务器");          textField.setEnabled(true);////弹起之后 端口文本框要设置可写状态          ServerFile.closeServer();//关闭服务器        }      }    });    tglbtnNewToggleButton.setFont(new Font("微软雅黑 Light", Font.PLAIN, 19));    tglbtnNewToggleButton.setBackground(Color.WHITE);    tglbtnNewToggleButton.setForeground(Color.DARK_GRAY);    tglbtnNewToggleButton.setBounds(345, 34, 138, 28);    panel_1.add(tglbtnNewToggleButton);    //文件接收端的进度条    progressBar_2 = new JProgressBar();    progressBar_2.setBackground(Color.WHITE);    progressBar_2.setForeground(new Color(255, 218, 185));    progressBar_2.setStringPainted(true);    progressBar_2.setBounds(460, 101, 190, 14);    panel_1.add(progressBar_2);    JPanel panel_2 = new JPanel();    panel_2.setToolTipText("");    panel_2.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "\u6587\u4EF6\u4F20\u8F93\u7AEF",        TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0)));    panel_2.setBackground(Color.WHITE);    panel_2.setBounds(39, 191, 652, 202);    contentPane.add(panel_2);    panel_2.setLayout(null);    //文件传输端的进度条    JProgressBar progressBar_1 = new JProgressBar();    progressBar_1.setFont(new Font("宋体", Font.PLAIN, 18));    progressBar_1.setStringPainted(true);    progressBar_1.setForeground(new Color(240, 128, 128));    progressBar_1.setBackground(Color.WHITE);    progressBar_1.setBounds(96, 169, 472, 20);    panel_2.add(progressBar_1);    JLabel lblIp = new JLabel("IP\u5730\u5740:");    lblIp.setFont(new Font("微软雅黑 Light", Font.PLAIN, 20));    lblIp.setBounds(26, 44, 70, 27);    panel_2.add(lblIp);    //IP地址文本框    textField_1 = new JTextField();    textField_1.setText("127.0.0.1");    textField_1.setFont(new Font("新宋体", Font.PLAIN, 20));    textField_1.setBounds(96, 44, 184, 30);    panel_2.add(textField_1);    textField_1.setColumns(10);    JLabel label_1 = new JLabel("\u7AEF\u53E3:");    label_1.setFont(new Font("微软雅黑 Light", Font.PLAIN, 20));    label_1.setBounds(308, 42, 80, 30);    panel_2.add(label_1);    //端口文本框    textField_2 = new JTextField();    textField_2.setText("8080");    textField_2.setFont(new Font("新宋体", Font.PLAIN, 20));    textField_2.setColumns(10);    textField_2.setBounds(359, 44, 80, 30);    panel_2.add(textField_2);    //打开本地路径的按钮    JButton button = new JButton("...");    button.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {        JFileChooser jf = new JFileChooser();        jf.setFileSelectionMode(JFileChooser.FILES_ONLY);        jf.showOpenDialog(SocketFileJFrame.this);        textField_3.setText(jf.getSelectedFile().getPath());      }    });    button.setBackground(Color.WHITE);    button.setBounds(533, 51, 35, 20);    panel_2.add(button);    JLabel label_2 = new JLabel("\u8DEF\u5F84:");    label_2.setFont(new Font("微软雅黑 Light", Font.PLAIN, 15));    label_2.setBounds(489, 50, 44, 18);    panel_2.add(label_2);    //显示文件路径框    textField_3 = new JTextField();    textField_3.setEnabled(false);    textField_3.setFont(new Font("微软雅黑 Light", Font.PLAIN, 20));    textField_3.setBounds(96, 100, 343, 38);    panel_2.add(textField_3);    textField_3.setColumns(10);    JLabel lblNewLabel = new JLabel("\u6587\u4EF6:");    lblNewLabel.setFont(new Font("等线 Light", Font.PLAIN, 25));    lblNewLabel.setBounds(33, 97, 56, 38);    panel_2.add(lblNewLabel);    //确定按钮    JButton button_1 = new JButton("\u786E\u5B9A");    button_1.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {        ClientFile client = new ClientFile(            textField_1.getText(), Integer.parseInt(textField_2.getText()),             textField_3.getText(), progressBar_1);        client.start();      }    });    button_1.setForeground(new Color(255, 255, 0));    button_1.setBackground(new Color(233, 150, 122));    button_1.setFont(new Font("微软雅黑 Light", Font.BOLD, 20));    button_1.setBounds(475, 100, 91, 38);    panel_2.add(button_1);  }}

看完上述内容,你们掌握利用java 怎么在局域网中进行文件传输的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 利用java 怎么在局域网中进行文件传输

本文链接: https://www.lsjlt.com/news/224565.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 利用java 怎么在局域网中进行文件传输
    利用java 怎么在局域网中进行文件传输?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java 实现局域网文件传输ClientFile.java package&nb...
    99+
    2023-05-31
    java 局域网 ava
  • 如何利用java-RMI进行大文件传输
    今天就跟大家聊聊有关如何利用java-RMI进行大文件传输,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。为什么要用RMI在这次的项目中,对于客户端与服务器之间的通信,想了许多办法,由...
    99+
    2023-06-17
  • 如何在java中使用socket对zip文件进行传输
    今天就跟大家聊聊有关如何在java中使用socket对zip文件进行传输,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。服务器端程序:import java.io.*;import j...
    99+
    2023-05-31
    java socket zip文件
  • Python怎么使用Netmiko进行文件传输
    传输配置文件、映像文件等是网络设备管理中常见的操作。Netmiko是一个Python库,可用于与各种网络设备进行交互,提供了一些用于传输文件的函数,其中包括SCP(Secure Copy Protocol)函数。Netmiko简介Netmi...
    99+
    2023-05-19
    Python netmiko
  • 怎么在Ubuntu系统中让文件进行加密传输
    这篇文章主要讲解了“怎么在Ubuntu系统中让文件进行加密传输”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在Ubuntu系统中让文件进行加密传输”吧!  本文介绍基于Ubuntu De...
    99+
    2023-06-13
  • Java 中怎么利用Socket实现网络传输
    今天就跟大家聊聊有关Java 中怎么利用Socket实现网络传输,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。采用Java Socket网络传输的序列化机制,将对象“压扁”成二进制字...
    99+
    2023-06-17
  • 如何在golang中使用WebSocket进行文件传输
    如何在golang中使用WebSocket进行文件传输WebSocket是一种支持双向通信的网络协议,能够在浏览器和服务器之间建立持久的连接。在golang中,我们可以使用第三方库gorilla/websocket来实现WebSocket功...
    99+
    2023-12-18
    Golang websocket 文件传输
  • 怎么在Java中利用File对文件进行操作
    本篇文章为大家展示了怎么在Java中利用File对文件进行操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.1java.io.FileFile用于表示文件系统中的一个文件或目录通过File可以:...
    99+
    2023-05-31
    java file
  • Windows8利用家庭组功能在局域网中共享文件与文件夹
    Win8中沿用了Win7的家庭组功能,可以使用户在局域网中简便的分享文件与文件夹。设置方法也基本相同,下面就让我们来看看Win8中利用家庭组功能共享文件和文件夹是如何实现的。 如果你是技术帝或者已经非常清楚Win7家庭组...
    99+
    2023-06-06
    Win8 家庭组 共享文件 功能 局域网 中共享文件 家庭
  • 教你在Linux SysOps中使用SSH进行文件传输
    在Linux SysOps中,使用SSH进行文件传输是非常常见的操作。SSH(Secure Shell)是一种安全的网络通信协议,可...
    99+
    2023-10-09
    Linux
  • Linux中怎么使用ftp命令对文件进行传输
    本篇文章为大家展示了Linux中怎么使用ftp命令对文件进行传输,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  [root@www ~]# yum install ftp 安装ftp支持 RedH...
    99+
    2023-06-13
  • 网络文件怎么利用Java进行读取并下载
    这篇文章将为大家详细讲解有关网络文件怎么利用Java进行读取并下载,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体内容如下import java.io.ByteArrayOutputStr...
    99+
    2023-05-31
    java ava
  • resources文件怎么利用java进行读取
    resources文件怎么利用java进行读取?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。java读取resources文件实现代码:String str&nb...
    99+
    2023-05-31
    java resources ava
  • Jar中的文件怎么利用Java进行读取
    这期内容当中小编将会给大家带来有关Jar中的文件怎么利用Java进行读取,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java读取Jar中的文件实现代码:import java.io.IOExc...
    99+
    2023-05-31
    java jar ava
  • Java中的excel文件怎么利用POI进行解析
    这篇文章给大家介绍Java中的excel文件怎么利用POI进行解析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.导入POI相关jar包org.apache.poi jar2.代码示例public List getA...
    99+
    2023-05-31
    java poi excel
  • 利用java怎么对xml文件进行解析
    利用java怎么对xml文件进行解析?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、【基础知识——扫盲】sax、dom是两种对xml文档进行解析的方法(没有具体实现,只是接口...
    99+
    2023-05-31
    java xml ava
  • 怎么利用java对文件名进行修改
    怎么利用java对文件名进行修改?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。实现代码: import java.io.*;  cl...
    99+
    2023-05-31
    java ava
  • 怎么在linux中使用nc命令传输文件
    本篇文章为大家展示了怎么在linux中使用nc命令传输文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。目的主机监听 nc -l 监听端口[ 未使用端口] > 要接收的文件名 nc -l 44...
    99+
    2023-06-12
  • 怎么在ajax中利用formdata流上传文件
    今天就跟大家聊聊有关怎么在ajax中利用formdata流上传文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。//html如下//form1<form class=...
    99+
    2023-06-08
  • 利用java怎么对二进制文件进行判断
    利用java怎么对二进制文件进行判断?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。java 判断二进制文件的方法代码实现:public static boole...
    99+
    2023-05-31
    java ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作