这是我使用的方法,它使用套接字的输入和输出流来发送和接收文件,完成后,它将自动重新启动服务器并从客户端重新连接到服务器。

服务器代码:

package app.server;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.logging.Level;

import java.util.logging.Logger;

public class Functions

{

private static ServerSocket server;

private static Socket socket;

public static void startServer(int port)

{

try

{

server = new ServerSocket(port);

socket = server.accept();

}

catch (IOException ex)

{

Logger.getLogger(Functions.class.getName()).log(Level.SEVERE, null, ex);

}

}

private static void restartServer()

{

new Thread()

{

@Override

public void run()

{

try

{

socket = server.accept();

}

catch (IOException ex)

{

Logger.getLogger(Functions.class.getName()).log(Level.SEVERE, null, ex);

}

}

}.start();

}

public static void sendFile(String inputFilePath)

{

FileInputStream fis;

BufferedInputStream bis;

OutputStream os;

BufferedOutputStream bos;

try

{

File input = new File(inputFilePath);

fis = new FileInputStream(input);

bis = new BufferedInputStream(fis);

os = socket.getOutputStream();

bos = new BufferedOutputStream(os);

byte[] buffer = new byte[1024];

int data;

while(true)

{

data = bis.read(buffer);

if(data != -1)

{

bos.write(buffer, 0, 1024);

}

else

{

bis.close();

bos.close();

break;

}

}

}

catch (FileNotFoundException ex)

{

Logger.getLogger(Functions.class.getName()).log(Level.SEVERE, null, ex);

}

catch (IOException ex)

{

Logger.getLogger(Functions.class.getName()).log(Level.SEVERE, null, ex);

}

restartServer();

}

}

客户代码:

package app.client;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.Socket;

import java.util.logging.Level;

import java.util.logging.Logger;

public class Functions

{

private static Socket socket;

private static String hostName;

private static int portNumber;

public static void connectToServer(String host, int port)

{

new Thread()

{

@Override

public void run()

{

try

{

hostName = host;

portNumber = port;

socket = new Socket(host, port);

}

catch (IOException ex)

{

Logger.getLogger(Functions.class.getName()).log(Level.SEVERE, null, ex);

}

}

}.start();

}

private static void reconnectToServer()

{

try

{

socket = new Socket(hostName, portNumber);

}

catch (IOException ex)

{

Logger.getLogger(Functions.class.getName()).log(Level.SEVERE, null, ex);

}

}

public static void receiveFile(String outputFilePath)

{

InputStream is;

BufferedInputStream bis;

FileOutputStream fos;

BufferedOutputStream bos;

try

{

File output = new File(outputFilePath);

is = socket.getInputStream();

bis = new BufferedInputStream(is);

fos = new FileOutputStream(output);

bos = new BufferedOutputStream(fos);

byte[] buffer = new byte[1024];

int data;

while(true)

{

data = bis.read(buffer);

if(data != -1)

{

bos.write(buffer, 0, 1024);

}

else

{

bis.close();

bos.close();

break;

}

}

}

catch (IOException ex)

{

Logger.getLogger(Functions.class.getName()).log(Level.SEVERE, null, ex);

}

reconnectToServer();

}

}

此方法效果很好,我将其用于服务器和客户端文件传输程序,您所需要做的就是输入服务器主机的IP地址并选择端口号(我使用8888)。

java服务器客户端文件,客户端服务器文件传输Java相关推荐

  1. java如何实现tcp传输图像_如何在java中实现TCP服务器和TCP客户端传输文件

    我实现了简单的TCP服务器和TCP客户端类,可以从客户端发送消息到服务器,消息将在服务器端转换为大写,但是如何实现从服务器到客户端的传输文件,并从客户端上传文件到服务器.以下代码是我所得到的. TCP ...

  2. Java服务端向客户端写文件_java实现客户端向服务器发送文件

    本文实例为大家分享了java实现客户端向服务器发送文件的具体代码,供大家参考,具体内容如下 服务器源代码: import java.io.BufferedReader; import java.io. ...

  3. java接收并存储文件_客户端读取本地文件的数据,发送到服务器,服务器接收并存储到文件中...

    只实现了传送文件的功能. 编写Socket客户端和服务器程序,客户端读取本地文件的数据,发送到服务器,服务器接收并存储到文件中. 消息格式: 字段 长度(单位字节) 内容 -------------- ...

  4. java 客户端上传_java实现上传文件到服务器和客户端

    JAVA编写一个可以上传文件的服务器和客户端,具体内容如下 服务端 class Server { public static void main(String[] args) throws Excep ...

  5. Java模拟文件发送给服务器,服务器将文件转发给其他用户,并保存到服务器本地,其他用户可以接收,并保存到本地磁盘,支持各种文件格式,并解决通信中服务器怎么区分客户端发来的文件类型

    在局域网中,客户可以将文件分享到网络上,由服务器进行转发给其他客户,其他客户可以接收服务器发来的文件,并保存到本地磁盘中. 以下是大致的工作流程 客户端有三个线程 主线程  1.负责启动 文件发送的线 ...

  6. c 服务器文件是存在,客户端服务器在较大的文件的c文件传输问题

    下面的代码适用于最后一个数据包包含的数据少于最大长度的较小文件,该功能通过显示接收到的文件正确退出. 如果传输的文件的最后一个数据包或缓冲区包含与我的情况下接收缓冲区阵列512的大小相同的确切数量.然 ...

  7. c# 客户端 服务器传输文件,通过TCP在C++客户端/ C#服务器之间传输文件

    我目前正尝试通过TCP在C++客户端和C#服务器之间发送jpeg图片流. 我在C++端使用transmitFile函数,但我不知道我是否在C#端正确处理它. 我没有得到运行时错误,但图片没有显示,所以 ...

  8. Java服务器与客户端传文件,java实现上传文件到服务器和客户端.pdf

    java实实现现上上传传文文件件到到服服务务器器和和客客户户端端 这篇文章主要为大家详细介绍了java实现上传文件到服务器和客户端,具有一定的参考价值,感兴趣的小伙伴们 以参考一下 JAVA编写一个 ...

  9. 【文件传输】FileZilla配置(在服务器和客户端之间互传文件的相关配置)

    [文件传输]FileZilla配置(在服务器和客户端之间互传文件的相关配置) 01 需求 1:FileZilla客户端 2:FileZilla服务器端 3:至少两台操作系统 02 说明 1:博主的物理 ...

最新文章

  1. Android SDK与API版本的对应关系
  2. 电脑与人脑,信息与知识
  3. 多线程编程之线程同步主要函数一览
  4. project项目管理案例_福清公司开展Project项目管理软件学习培训活动
  5. ad20如何画出pcb板大小_NAKANISHI分板机主轴在PCB分板上切削案例
  6. sqlite排序规则
  7. Node单线程的特点
  8. md5 加密 swfit版
  9. Unity学习笔记——博客中有游戏练习案例
  10. java文件处理(3)——实现文件复制和文件移动
  11. AD9如何创建原理图元件
  12. 家到学校路线图怎么画_从家到学校的详细地图怎么画?
  13. 计算机对写字教学的冲淡,不断改进评价方法努力促进写字教学
  14. linux shadow文件*,Linux /etc/shadow文件详解
  15. 得空写的基于web的工作流表单设计器,大家看看怎么样
  16. esxi 环境 西数硬盘测试软件,手把手教你测试固态硬盘!硬盘测试软件大汇总
  17. Linux入门学习(二) —— 怎么创建文件?怎么复制、剪切、删除文件?
  18. 一花一世界,在微服务中定义边界
  19. 大淘客的index.php,index.php · zenozhengs/大淘客CMS底部菜单修改版 - Gitee.com
  20. 【24位IEPE振动加速度音频采集卡-北京阿尔泰科技】

热门文章

  1. 从ini文件里面读取配置文件
  2. [转]Ajax跨域访问问题-方法大全
  3. 图片连续向左向右向下向上滚动和左右运动、指向停止js代码
  4. html实现平面地图效果,HTML5 光点组成的平面和立体世界地图
  5. 批处理等待上一条完成再执行下面的_分布式批处理实现方案
  6. zabbix监控MogDB之采集prometheus数据
  7. 直播丨Oracle 12.2系列安装
  8. oracle 12c dg搭建以及故障诊断
  9. 一文了解MySQL的Buffer Pool
  10. MapReduce Service更换集群外部时钟源,仅需10步