使用TCP发送文件
客户端
package com.zy.demo3; import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException; public class TCPClient { public static void main(String[] args) throws Exception {//客户端
// 1创建socket对象 Socket socket = new Socket("localhost", 6666);//Socket(String host, int port) 创建流套接字并将其连接到指定主机上的指定端口号。 host写Ip和主机名都可以 //2得到输出流
OutputStream outputStream = socket.getOutputStream(); //3发送数据给服务端 //读取主机上的文件
//按文件流的方式,先读入内存,在写出去[边读编写]
FileInputStream fileInputStream = new FileInputStream(new File("E:\\弹性表达式.doc"));//本地文件
byte b[]=new byte[1024];
int read = fileInputStream.read(b);
while(read!=-1){ //-1表示读到末尾了
outputStream.write(b);
read=fileInputStream.read(b);
}
//-----------------------------
//接收响应
InputStream inputStream = socket.getInputStream();
byte re[]=new byte[1024];
inputStream.read(re);
System.out.println("接收的响应是:"+new String(re).trim()); //4关闭资源
outputStream.close();
socket.close(); } }
服务端
package com.zy.demo3; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket; public class TCPServer {//服务端 public static void main(String[] args) throws Exception {
//基于流
//1创建serversocket对象
ServerSocket serverSocket = new ServerSocket(6666);//端口约定6666 //2获取socket对象(客户端)
Socket accept = serverSocket.accept();//阻塞,即打开服务端后程序会运行到这一行,虚拟灯不灭,等待客户端发送数据 //3得到输入流
InputStream inputStream = accept.getInputStream(); //----------------
//响应(必须先响应再接收文件,否则客户端和服务端都在阻塞着,虚拟灯一直亮着)
OutputStream outputStream = accept.getOutputStream();
outputStream.write("服务端已接收完毕,谢谢客户端".getBytes());
//--------------------- //4读取客户端发送数据
//将读取的数据存到本机文件
File file = new File("E:\\接收的文件\\1.doc");//接收的文件
File parentFile = file.getParentFile();
if (!parentFile.exists()) {
parentFile.mkdirs();
}
file.createNewFile();
FileOutputStream fileOutputStream = new FileOutputStream(file); byte b[]=new byte[1024];
int read = inputStream.read(b);//返回所占字节数(和FileInputStream一样,读取完毕时也返回-1)
//边读编写
while(read!=-1){
fileOutputStream.write(b);
read=inputStream.read(b);
} System.out.println("接收完毕"); //5关闭资源 accept.close();
serverSocket.close();
} }
先运行服务端

再运行客户端

然后返回服务端

使用TCP发送文件的更多相关文章
- socket(TCP)发送文件
一:由于在上一个随笔的基础之上拓展的所以直接上代码,客户端: using System; using System.Collections.Generic; using System.Componen ...
- {网络编程}和{多线程}应用:基于TCP协议【实现多个客户端发送文件给一个服务器端】--练习
要求: 实现多个客户端发送文件给一个服务器端 提示:多个人创建客户端发送文件,服务端循环接收socket,从socket中获取文件 说明:这里我们只要建立一个服务端就可以了,然后让多台电脑使用客户端给 ...
- QT笔记之VS2012 TCP传送文件
注意:工程监理后,因为用到网路,所以要加入对应的库 服务器: .h #ifndef TCPFILE_H #define TCPFILE_H #include <QtWidgets/QWidget ...
- xmpp发送文件
xmpp 文件传输协议: XEP-0096: SI File Transfer:文件传输流初始化协议 XEP-0065: SOCKS5 Bytestreams:带外socks5代理字节流传输协议 XE ...
- C#_Socket网络编程实现的简单局域网内即时聊天,发送文件,抖动窗口。
最近接触了C#Socket网络编程,试着做了试试(*^__^*) 实现多个客户端和服务端互相发送消息 发送文件抖动窗口功能 服务端: using System; using System.Collec ...
- ansible管理windows (发送文件)
https://github.com/ansible/ansible/raw/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 环境: 服务 ...
- java实现两台电脑间TCP协议文件传输
记录下之前所做的客户端向服务端发送文件的小项目,总结下学习到的一些方法与思路. 注:本文参考自<黑马程序员>视频. 首先明确需求,在同一局域网下的机器人A想给喜欢了很久的机器人B发送情书, ...
- Socket发送文件
.Net.cs using System; using System.Collections.Generic; using System.IO; using System.Linq; using Sy ...
- 通过TCP实现文件传输
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.In ...
随机推荐
- 阿里面试:MySQL如何设计索引更高效?
有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...
- day116:MoFang:显示背包解锁/未解锁格子数&显示背包的道具物品&背包解锁
目录 1.显示背包的已解锁/未解锁格子数 2.显示背包中的道具物品 3.用户购买道具的时候,判断背包存储是否达到上限 4.道具也可以使用积分购买 5.在商城界面根据金额/积分显示不同商品 6.背包解锁 ...
- MongoDB备份(mongoexport)与恢复(mongoimport)
1.备份恢复工具介绍: mongoexport/mongoimport mongodump/mongorestore(本文未涉及) 2.备份工具区别在哪里? 2.1 mongoexport/mongo ...
- .NET Core 处理 WebAPI JSON 返回烦人的null为空
前言 项目开发中不管是前台还是后台都会遇到烦人的null,数据库表中字段允许空值,则代码实体类中对应的字段类型为可空类型Nullable<>,如int?,DateTime?,null值字段 ...
- Python在项目外更改项目内引用
前言 目前有一个奇葩的需求, 将某个开源项目整合进自己的项目里去调度, 还需要在每次启动这个开源项目时, 加载不同的配置文件进去, 问题是配置文件并不是一个 conf 或者是其他的什么, 而是以 .p ...
- 【Linux】kali 安装 python3 和 pip3(亲测有效)
[Linux]kali 安装 python3 和 pip3 引言: 在使用kali的时候,经常会用到各种工具以及脚本,而大多数脚本都是以python编写的,但是烦就烦在python有2个版本,有些 ...
- 执行py文件需要可执行权限吗?
案例解析 这个问题描述起来有点违反直觉,要执行一个文件难道不应该需要可执行权限吗?让我们先来看一个例子: # module1.py def test(): print ('hello world!') ...
- ActiceMQ详解
1. MQ理解 1.1 MQ的产品种类和对比 MQ即消息中间件.MQ是一种理念,ActiveMQ是MQ的落地产品. 消息中间件产品 各类MQ对比 Kafka 编程语言:Scala 大数据领域的主流MQ ...
- 攻防世界—pwn—int_overflow
题目分析 checksec检查文件保护机制 ida分析程序 经典整数溢出漏洞示例 整数溢出原理整数分为有符号和无符号两种类型,有符号数以最高位作为其符号位,即正整数最高位为1,负数为0, 无符号数取值 ...
- vs code配置vue自动格式化
vs code配置vue自动格式化 我他妈的要被这个vs code的格式化逼疯了.我在网上看了很多的文章,不是太老就是不好使,遇到太多坑了.在这贴出自己的配置,虽然有多余的代码,虽然可能在未来的更新 ...