我越是逃离,却越是靠近你。

我越是背过脸,却越是看见你。

我从你开始,

我在你结束。

需求:实现局域网下socket传输文件.

客户端步骤:

1、建立与服务器的连接

2、创建client输出流

3、创建输入流,绑定本地文件

4、读取文件后输出给服务器

服务器端步骤:

1、启动服务器

2、创建accept输入流

3、创建输出流绑定本地文件

4、读取客户端信息写入本地文件

1.字节流传输文件.

 public class Client {

     public static void main(String[] args) throws IOException {
Socket client = new Socket("192.168.0.112", );
OutputStream os = client.getOutputStream();
FileInputStream fis = new FileInputStream("/home/yanshaochen/public/2017-05-06 15-12-02屏幕截图.png");
byte[] bytes = new byte[];
int data;
while((data = fis.read(bytes))!= -){
os.write(bytes, , data);
}
fis.close();
client.close();
System.out.println("发送成功!");
}
}
 public class Server {

     public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket();
System.out.println("listening..");
Socket accept = server.accept();
InputStream is = accept.getInputStream();
FileOutputStream fos = new FileOutputStream("d:\\download\\屏幕截图.png");
byte[] bytes = new byte[];
int data;
while((data = is.read(bytes))!=-){
fos.write(bytes, , data);
}
fos.close();
server.close();
}

2.字符流传输文件txt.

 public class Client {

     public static void main(String[] args) throws IOException {

         Socket client = new Socket("192.168.0.112", );
OutputStream os = client.getOutputStream();
Reader fr = new FileReader("/home/yanshaochen/public/zfsm.txt");
BufferedReader br = new BufferedReader(fr);
String buffer;
while((buffer = br.readLine())!= null){
buffer += "\r\n";
os.write(buffer.getBytes());
}
br.close();
client.close();
System.out.println("发送成功!");
}
}
 public class Server {

     public static void main(String[] args) throws Exception {

         ServerSocket server = new ServerSocket();
System.out.println("listening..");
Socket accept = server.accept();
InputStream is = accept.getInputStream();
FileWriter fw = new FileWriter("d:\\download\\zfsm.txt");
byte[] bytes = new byte[];
int data;
while((data = is.read(bytes)) != -){
fw.write(new String(bytes, , data));
}
fw.close();
server.close();
} }

Java学习笔记——Socket实现文件传输的更多相关文章

  1. Java学习笔记--Socket和ServerSocket

    参考资料: http://haohaoxuexi.iteye.com/blog/1979837http://zhidao.baidu.com/link?url=OeOSa0YbOzSbMVPa8sgP ...

  2. Java学习笔记--字符串和文件IO

    1.Java中的字符串类和字符的表示 2.区分String,StringBuilder和StringBuffer 3.从命令行中给main方法传递参数 4.文件操作 1 Java中的字符串和字符 1. ...

  3. Java学习笔记-基础语法Ⅸ-文件

    File File是文件和路径名的抽象表示,File封装的并不是一个真正存在的文件,是一个路径名,可以存在也可以不存在 常用方法: 创建文件:createNewFile() 创建目录:mkdir() ...

  4. JAVA学习笔记 -- 包资源文件jar包裹

    初学者GUI,使用Eclipse出口jar包裹,不能显示最小化的图标集(hello.png根文件下的项目文件夹文件).码如下面: import javax.swing.JFrame; import j ...

  5. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

  6. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

  7. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  8. 20155234 2016-2017-2第十周《Java学习笔记》学习总结

    20155234第十周<Java学习笔记>学习总结 教材学习内容总结 网络编程 在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定 ...

  9. 20145330第十周《Java学习笔记》

    20145330第十周<Java学习笔记> 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就 ...

随机推荐

  1. Qt5.4.1在windows7配置Android开发环境(阳光柠檬_)

    网上的说法有些时间比较久远,软件更新又快,配置路上总有一些坎坷. 自己亲自尝试了一遍,记录下来. 所需的软件: 1. qt-opensource-windows-x86-android-5.4.1.e ...

  2. device platform 相应的表

    hw.machine 这个值相应相关代码最好在后台管理,降低手机端代码更新次数 if ([platform isEqualToString:@"iPhone1,1"]) retur ...

  3. 在运行Hfile的MR如果任务client结束OOM

    在运行MR将HDFS转换成HFile什么时候.例如,会发生以下的异常: 14/07/09 18:02:59 INFO mapred.JobClient:  map 83% reduce 0% 14/0 ...

  4. 好用的Markdown 编辑器及工具

    Markdown 是 2004 年由 John Gruberis 设计和开发的纯文本格式的语法,所以通过同一个名字它可以使用工具来转换成 HTML.readme 文件,在线论坛编写消息和快速创建富文本 ...

  5. html常用

    常用标签 <head></head> <body></body> <script></script> <a>< ...

  6. SICP 1.11-1.13

    1.11 递归版本 (define (f n) (cond ((< n ) n) ()) (* (f (- n )) ) (* (f (- n )) ))))) 迭代版本 (define (f ...

  7. WPF 数据模板的使用

    <Window x:Class="CollectionBinding.MainWindow"        xmlns="http://schemas.micros ...

  8. 消息队列中点对点与发布订阅区别(good)

    背景知识 JMS一个在 Java标准化组织(JCP)内开发的标准(代号JSR 914).2001年6月25日,Java消息服务发布JMS 1.0.2b,2002年3月18日Java消息服务发布 1.1 ...

  9. Visual C++ 编译器自动假定带 .C 扩展名的文件是 C 文件而不是 C++ 文件,并且拒绝 C++ 语法和关键字(c语言只能在大括号最前面申明变量)

    今天在编译OpenGL红宝书附带源码中的light.c文件时遇到一个诡异的问题: 如图light .c,在不做任何修改的情况编译OK.然而只要在某些地方写了可执行代码,则会无法通过编译器编译! (这几 ...

  10. Motion Paths in WPF 4 using Expression Blend 4

    原文 Motion Paths in WPF 4 using Expression Blend 4 Posted by: Pravinkumar Dabade , on 3/19/2011, in C ...