使用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 ...
随机推荐
- 第1章 无所不在的JavaScript
traceur转码(编译)器 Babel转码(编译)器 JavaScript API 的核心组成部分:ECMASCcript, DOM, BOM 桌面应用:electron 移动应用:Apache C ...
- thinkphp redis实现文章点赞功能并同步入mysql
<?php namespace app\common\controller; use think\App; use think\facade\Cache; use think\facade\Db ...
- GC算法介绍及工作原理和优缺点
一.GC定义与作用 GC就是垃圾回收机制的简写 GC可以找到内存中的垃圾,并释放和回收空间,GC里的垃圾是什么 如下图所示: GC算法是什么:GC是一种机制,垃圾回收器完成具体的工作 工作的内容就是查 ...
- 【Java】Java注释 - 单行、块、文档注释
简单记录,Java 核心技术卷I 基础知识(原书第10 版) 注释 我们在编写程序时,经常需要添加一些注释,用来描述某段代码的作用,提高Java源程序代码的可读性,使得Java程序条理清晰. 写代码的 ...
- kubernets之机理概览
一 了解kubernets的运行机理 1.1 了解架构 众所周知,kubernets的组成由2个部分组成 kubernets 平面 node节点 (工作节点) 控制平面的组成 etcd 分布 ...
- LeetCode637. 二叉树的层平均值
题目 1 class Solution { 2 public: 3 vector<double>ans; 4 vector<double> averageOfLevels(Tr ...
- 命令模式与go-redis command设计
目录 一.什么是命令(Command)模式 二.go-redis command相关代码 三.总结 一.什么是命令(Command)模式 命令模式是行为型设计模式的一种,其目的是将一个请求封装为一个对 ...
- three.js cannon.js物理引擎之Heightfield
今天郭先生说一说cannon.js物理引擎之Heightfield高度场,学过场论的朋友都知道物理学中把某个物理量在空间的一个区域内的分布称为场,高度场就是与高度相关的场,而cannon.js物理引擎 ...
- GStreamer环境搭建篇
GStreamer是一套强大的多媒体中间件系统,跟FFmpeg功能类似. 各个Linux发行版(Ubuntu,fedora),大都集成了GStreamer相关工具,而作为软件层次结构最上层的播放器,几 ...
- JavaScript中的构造函数和原型!
JavaScript中的原型! 原型的内容是涉及到JavaScript中的构造函数的 每一个构造函数都有一个原型对象!prototype 他的作用是 共享方法!还可以扩展内置对象[对原来的内置对象进行 ...