Java学习笔记——Socket实现文件传输
我越是逃离,却越是靠近你。
我越是背过脸,却越是看见你。
我从你开始,
我在你结束。
需求:实现局域网下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实现文件传输的更多相关文章
- Java学习笔记--Socket和ServerSocket
参考资料: http://haohaoxuexi.iteye.com/blog/1979837http://zhidao.baidu.com/link?url=OeOSa0YbOzSbMVPa8sgP ...
- Java学习笔记--字符串和文件IO
1.Java中的字符串类和字符的表示 2.区分String,StringBuilder和StringBuffer 3.从命令行中给main方法传递参数 4.文件操作 1 Java中的字符串和字符 1. ...
- Java学习笔记-基础语法Ⅸ-文件
File File是文件和路径名的抽象表示,File封装的并不是一个真正存在的文件,是一个路径名,可以存在也可以不存在 常用方法: 创建文件:createNewFile() 创建目录:mkdir() ...
- JAVA学习笔记 -- 包资源文件jar包裹
初学者GUI,使用Eclipse出口jar包裹,不能显示最小化的图标集(hello.png根文件下的项目文件夹文件).码如下面: import javax.swing.JFrame; import j ...
- java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
- java学习笔记16--I/O流和文件
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input Output)流 IO流用来处理 ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- 20155234 2016-2017-2第十周《Java学习笔记》学习总结
20155234第十周<Java学习笔记>学习总结 教材学习内容总结 网络编程 在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定 ...
- 20145330第十周《Java学习笔记》
20145330第十周<Java学习笔记> 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就 ...
随机推荐
- WPF 把图片分割成两份自动翻页 WpfFlipPageControl:CtrlBook 书控件
原文:WPF 把图片分割成两份自动翻页 WpfFlipPageControl:CtrlBook 书控件 版权声明:本文为博主原创文章,需要转载尽管转载. https://blog.csdn.net/z ...
- 圆周卷积(circular convolution)
1. 定义与概念 圆周卷积也叫循环卷积, 2. 实现(matlab) 以圆周的形式卷积两个信号: >> z = ifft(fft(x).*fft(y));
- 简单的讲Erlang一些运营商
Erlang 有几个运营商.对照.数学运算符.布尔运算符,旨在使这些类型的操作者的讨论,参考erlang文件,以样例说明. Erlang的比較运算符 写法例如以下: Expr1 op Expr2 1& ...
- delphi之多线程编程(尚未学习)
本文的内容取自网络,并重新加以整理,在此留存仅仅是方便自己学习和查阅.所有代码均亲自测试 delphi7下测试有效.图片均为自己制作. 多线程应该是编程工作者的基础技能, 但这个基础我从来没学过,所以 ...
- U3D游戏开发商思考
代码驱动带来的技术题 游戏碎片化.U3D 引擎有个非常有力的特色,就是实时编译执行.这意味着不管在不论什么时候,仅仅要按下执行图标,当前的场景就会进入可执行状态. 这导致了游戏在开发的过程中常常陷入一 ...
- EF延迟加载LazyLoading
优点 只在需要的时候加载数据,不需要预先计划,避免了各种复杂的外连接.索引.视图操作带来的低效率问题 缺陷:多次与DB交互,性能降低 阻止延迟加载解决方案:1.ToList(),返回的东西是个内存级的 ...
- MVVM讲解
一,MVVM理论知识 从上一篇文章中,我们已经知道,WPF技术的主要特点是数据驱动UI,所以在使用WPF技术开发的过程中是以数据为核心的,WPF提供了数据绑定机制,当数据发生变化时,WPF会自动发出通 ...
- IOS开发之关于NSString和NSMutableString的retainCount
1. 字符串常量 NSString *s = @"test"; NSLog(@"s:%lx",[s retainCount]); //fffffffffffff ...
- Spring 中 CharacterEncodingFilter 失效?
# 问题 Spring 提供了CharcterEncodingFilter,专门解决字符串编码的问题. 诡异的是,在类 AbstractAnnotationConfigDispatcherServle ...
- C# 桌面软件开发-深入学习 [1]- AY-C#人爱学不学-aaronyang技术分享
原文:C# 桌面软件开发-深入学习 [1]- AY-C#人爱学不学-aaronyang技术分享 曾经我做office,不想依赖别人dll,就使用了 Type.GetTypeFromProgID 可以根 ...