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学习笔记> 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就 ...
随机推荐
- Matlab Tricks(二十六)—— 置乱(随机化)与恢复(shuffle/permutation & restore)
x = 1:10; n = length(x); perm = randperm(n); x_perm = x(perm); % x_perm 表示置乱后的结果 x_ori(perm) = x_per ...
- Linux性能测试 ps命令
名称:ps 使用权限:所有使用者 使用方式:ps [options] [--help] 说明:显示瞬间行程 (process) 的动态 参数: ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍 ...
- wpf 实现实时毛玻璃(live blur)效果
原文:wpf 实现实时毛玻璃(live blur)效果 I2OS7发布后,就被它的时实模糊吸引了,就想着能不能将这个效果引入到我们的产品上.拿来当mask肯定会很爽,其实在之前也做过类似的,但是不是实 ...
- 算法 Tricks(六)—— 判断一个数是否为完全平方数
int(sqrt(n)) * int(sqrt(n)) == n ? 1:0; matlab 下判断一个数是否能开方的判断是: floor(sqrt(m))^2 == m
- 各linux版本重启apache命令
各linux版本重启apache命令 Slackware Linux命令: /etc/rc.d/rc.httpd restart ubuntu.Debian 系统命令: /etc/init.d/apa ...
- Shell脚本入门学习笔记
1.shell操作系统和用户之间.负责解释命令行 2./etc/shells 记录登录系统有效支持shell 3./etc/passwd 最后,有人谁可以看到用户的默认shell 4.直接输入shel ...
- WPF刷新界面
Winform 里有 Application.DoEvents();可刷新! WPF 里没这个,尽管可用委托实现多线程,但是刷新还是不行! 后来找到了 类似App.DoEvents()的方法(): 代 ...
- Token的设计(2)
词法分析 Token的几个种类 前端的第一步就是词法分析, 这个过程通俗来讲就是将源代码转化为一串Tokens. 所以首先应该想到的是, 到底该有哪几种类型的Token ? 关于这个问题我已经想过了, ...
- WPF 为资源字典 添加事件响应的后台类
原文:WPF 为资源字典 添加事件响应的后台类 前言,有许多同学在写WPF程序时在资源字典里加入了其它控件,但又想写事件来控制这个控件,但是资源字典没有CS文件,不像窗体XAML还有一个后台的CS文件 ...
- Win8 Metro(C#)数字图像处理--2.46图像RGB分量增强效果
原文:Win8 Metro(C#)数字图像处理--2.46图像RGB分量增强效果 [函数名称] RGB分量调整 RGBAdjustProcess(WriteableBitmap ...