客户端

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发送文件的更多相关文章

  1. socket(TCP)发送文件

    一:由于在上一个随笔的基础之上拓展的所以直接上代码,客户端: using System; using System.Collections.Generic; using System.Componen ...

  2. {网络编程}和{多线程}应用:基于TCP协议【实现多个客户端发送文件给一个服务器端】--练习

    要求: 实现多个客户端发送文件给一个服务器端 提示:多个人创建客户端发送文件,服务端循环接收socket,从socket中获取文件 说明:这里我们只要建立一个服务端就可以了,然后让多台电脑使用客户端给 ...

  3. QT笔记之VS2012 TCP传送文件

    注意:工程监理后,因为用到网路,所以要加入对应的库 服务器: .h #ifndef TCPFILE_H #define TCPFILE_H #include <QtWidgets/QWidget ...

  4. xmpp发送文件

    xmpp 文件传输协议: XEP-0096: SI File Transfer:文件传输流初始化协议 XEP-0065: SOCKS5 Bytestreams:带外socks5代理字节流传输协议 XE ...

  5. C#_Socket网络编程实现的简单局域网内即时聊天,发送文件,抖动窗口。

    最近接触了C#Socket网络编程,试着做了试试(*^__^*) 实现多个客户端和服务端互相发送消息 发送文件抖动窗口功能 服务端: using System; using System.Collec ...

  6. ansible管理windows (发送文件)

    https://github.com/ansible/ansible/raw/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 环境: 服务 ...

  7. java实现两台电脑间TCP协议文件传输

    记录下之前所做的客户端向服务端发送文件的小项目,总结下学习到的一些方法与思路. 注:本文参考自<黑马程序员>视频. 首先明确需求,在同一局域网下的机器人A想给喜欢了很久的机器人B发送情书, ...

  8. Socket发送文件

    .Net.cs using System; using System.Collections.Generic; using System.IO; using System.Linq; using Sy ...

  9. 通过TCP实现文件传输

    import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.In ...

随机推荐

  1. SAAS云平台搭建札记: (三) AntDesign + .Net Core WebAPI权限控制、动态菜单的生成

    我们知道,当下最火的前端框架,非蚂蚁金服的AntDesign莫属,这个框架不仅在国内非常有名,在国外GitHub上React前端框架也排名第一.而且这个框架涵盖了React.Vue.Angular等多 ...

  2. windows环境搭建

    GO语言环境配置: 安装GOlang,添加到环境变量path 默认会创建环境变量GOPATH,其中存放代码和编译后的工程文件等,用户可以根据个人需要,在别的路径下创建gopath,并添加到环境变量中. ...

  3. 非root用户安装centos的jdk

    1. 下载linux的jdk到自定义目录(以下简称安装目录),解压. 2. 在安装目录下新建文件局部环境变量文件:bash_profile 内容为:(注意修改JAVA_HOME目录) export J ...

  4. Linux学习笔记 | 配置ssh

    目录: SSH的必要性 将默认镜像源修改为清华镜像源 Linux安装ssh软件 使用putty软件实现ssh连接 Windows下安装winscp SSH的必要性 一般服务器都位于远程而非本地,或者及 ...

  5. ctfhub技能树—RCE—命令注入

    打开靶机 查看页面信息 输入127.0.0.1进行测试 构造payload 127.0.0.1&ls 查看文件内容信息 127.0.0.1 & cat 179852221619745. ...

  6. IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerp

    [root@k8s-master ~]# scp /etc/sysctl.d/k8s.conf root@192.168.30.23:/etc/sysctl.d/k8s.conf@@@@@@@@@@@ ...

  7. undefined和null区别

    undefined类型只有一个值就是undefined,没有必要显式地声明一个变量为undefined. null类型其实就是一个对象的空指针,所以用typeof null 才会显示为object. ...

  8. spring mvc + mybaties + mysql 完美整合cxf 实现webservice接口 (服务端、客户端)

    spring-3.1.2.cxf-3.1.3.mybaties.mysql 整合实现webservice需要的完整jar文件 地址:http://download.csdn.net/detail/xu ...

  9. .NET 项目中的单元测试

    .NET 项目中的单元测试 Intro "不会写单元测试的程序员不是合格的程序员,不写单元测试的程序员不是优秀的工程师." -- 一只想要成为一个优秀程序员的渣逼程序猿. 那么问题 ...

  10. 2V转3V的电源芯片电路图,2.4V转3V电路

    两节镍氢电池1.2V+1.2V是2.4V的标称电压,2.4V可以转3V输出电路应用. 在2.4V转3V和2V转3V的应用中,输出电流可最大600MA. 2V的低压输入,可以采用PW5100低压输入专用 ...