java使用TCP,由客户端向服务端传输图片,(电脑与电脑)或(同一台电脑)
时间:2022-07-28
本文章向大家介绍java使用TCP,由客户端向服务端传输图片,(电脑与电脑)或(同一台电脑),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
概述
1.完成图片的复制,与客户端向服务端传输文字相差不大。都是:
1.1基于TCP协议的服务器端
1.创建服务器套接字,绑定端口号(new ServerSocket(1008))
2.侦听客户连接,返回socker(listener.accept())
3.获输入、输出流
4.处理数据
5.关闭资源
1.2基于TCP协议的客户端
1.创建客户端套接字,指定服务器的地址和端口号
2.获输入、输出流
3.处理数据
4.关闭资源
2.需要注意的是:1.首先启动服务端Server 的服务,然后启动客户端Client
2.由客户端FileInputStream 向电脑a读取图片,BufferedOutputStream 再向电脑a写入图片
3.由服务端BufferedInputStream 从电脑b读取图片,FileOutputStream 再向电脑b 写入图片
1.服务端代码
package d04_test;/*
* zt
* 2020/8/10
* 20:36
*
*/
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
//1.创建
ServerSocket listener = new ServerSocket(10086);
//2.侦听
System.out.println("服务器已经启动");
Socket socket = listener.accept();
//3.获取数据
BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
//4.处理数据
FileOutputStream fos = new FileOutputStream("f:\yyy.jpg");
byte[] buf = new byte[1024];
int len = 0;
while((len = bis.read(buf))!=-1){
fos.write(buf, 0, len);
}
//5.关闭资源
fos.close();
bis.close();
socket.close();
listener.close();
System.out.println("复制完毕");
}
}
2.客户端代码
package d04_test;/*
* zt
* 2020/8/10
* 20:37
*
*/
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws Exception {
//1.创建
Socket socket = new Socket("10.0.139.160",10086);
//2.获取输入流输出流
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
//3.处理数据
FileInputStream fis = new FileInputStream("f:\aaa.jpg");
byte[] buf = new byte[1024];
int len = 0;
while ((len = fis.read(buf))!=-1){
bos.write(buf, 0, len);
bos.flush();
}
//4.关闭资源
bos.close();
fis.close();
socket.close();
System.out.println("发送完毕");
}
}
3.运行结果
Server运行结果:
服务器已经启动
复制完毕
Process finished with exit code 0
Client运行结果:
发送完毕
Process finished with exit code 0
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(八)线上Mysql数据库崩溃事故的原因和处理
- 数据结构01 算法的时间复杂度和空间复杂度
- Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦
- Spring【依赖注入】就是这么简单
- 数据结构02 线性表之顺序表
- struts2+spring+hibernate整合步骤(2)
- Spring入门这一篇就够了
- Mybatis面试题
- 从业务角度分析奇怪的数据库高负载问题 (r4笔记第35天)
- 数据结构03 线性表之链表
- Java基础-12(01)总结Scanner,String
- 通过shell绑定系统进程调优 (r4笔记第34天)
- Mybatis【入门】
- 数据结构04 链表的面试题
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 批量执行crontab指定条目的注释和解注释
- Rancher集群部署后需要做的几件事
- Ingress(Nginx)日志持久化与可视化(多图预警)
- .Net在Windows上使用Jenkins做CI/CD的那些事
- 【STM32H7】第9章 RL-TCPnet调试方法(Event Recorder和串口两种)
- 【STM32F429】第9章 RL-TCPnet调试方法(Event Recorder和串口两种)
- 【STM32F407】第9章 RL-TCPnet V7.X调试方法(Event Recorder和串口两种)
- CentOS7的udev的绑定规则
- 案例:记录一则强制开库遭遇ORA-16433的处理过程
- mybatis升级为mybatis-plus踩到的坑
- Treepath
- linux 远程ssh免密登录
- npm 安装 electron taobao镜像 404错误 自用 实践笔记
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(二):部署
- 队列的一种实现:循环队列