[Socket]Socket文件传输
1、Server
import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket; public class Server
{
private ServerSocket serverSocket; private DataInputStream in; private FileOutputStream out; public Server(int port) throws IOException
{
serverSocket = new ServerSocket();
} public void receiveFile(String destFile) throws IOException
{
Socket socket = serverSocket.accept();
DataInputStream in = new DataInputStream(socket.getInputStream()); out = new FileOutputStream(destFile);
int length = in.readInt();
System.out.println("receiveLength:"+length); byte[] buffer = new byte[];
int end = ;
while ((end = in.read(buffer)) > )
{
out.write(buffer, , end);
out.flush();
}
}
public void close()
{
try{
try{
if (in != null) in.close();
}
finally{
try{
if (out != null) out.close();
}
finally{
serverSocket.close();
}
}
}catch (IOException e){
// ignore
} } public static void main(String[] args) throws IOException
{
Server server = new Server();
try{
server.receiveFile("c:/dest.txt");
}finally{
server.close();
}
}
}
2、Client
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException; public class Client
{
private Socket socket; private FileInputStream input; private DataOutputStream output; public Client(String IP, int port) throws UnknownHostException, IOException
{
this.socket = new Socket(IP, port);
output = new DataOutputStream(socket.getOutputStream());
} public void sendFile(String fileName) throws IOException
{
input = new FileInputStream(fileName);
// 获得文件长度
int fileLength = input.available();
System.out.println("file length:" + fileLength);
output.writeInt(fileLength);
// 读取文件,写入socket
byte[] buffer = new byte[];
int bufferLength = ;
while ((bufferLength = input.read(buffer)) > )
{
output.write(buffer, , bufferLength);
}
} public void close()
{
try{
try{
if (input != null) input.close();
}
finally{
try{
if (output != null) output.close();
}
finally{
socket.close();
}
}
}catch (IOException e){
// ignore
} } public static void main(String[] args) throws UnknownHostException, IOException
{
Client client = new Client("127.0.0.1", );
try
{
client.sendFile("c:/src.txt");
}
finally
{
client.close();
}
}
}
[Socket]Socket文件传输的更多相关文章
- 洗礼灵魂,修炼python(86)--全栈项目实战篇(12)—— 利用socket实现文件传输/并发式聊天
由于本篇博文的项目都很简单,所以本次开个特例,本次解析两个项目,但是都很简单的 项目一:用socket实现文件传输 本项目很简单,作为小项目的预热的,前面刚学完socket,这里马上又利用socket ...
- Java简单文件传输 socket简单文件传输示例
服务器端代码: import java.io.*; import java.net.*; /** * Created with IntelliJ IDEA. * User: HYY * Date: 1 ...
- socket实现文件传输
server:===========================================import socketimport structimport jsonsk = socket.s ...
- python socket实现文件传输(防粘包)
1.文件传输的要点: 采用iterator(迭代器对象)迭代读取,提高读取以及存取效率: 通过for line in file_handles逐行conn.send(): 2.socket粘包问题: ...
- Java开发笔记(一百一十五)使用Socket开展文件传输
前面介绍了怎样通过Socket在客户端与服务端之间传输文本,当然Socket也支持在客户端与服务端之间传输文件,因为文件本身就是通过I/O流实现读写操作的,所以在套接字的输入输出流中传输文件真是再合适 ...
- Java学习笔记——Socket实现文件传输
我越是逃离,却越是靠近你. 我越是背过脸,却越是看见你. 我从你开始, 我在你结束. 需求:实现局域网下socket传输文件. 客户端步骤: 1.建立与服务器的连接 2.创建client输出流 3.创 ...
- JAVA Socket:文件传输
客户端:读取文件(FileInputStream),发送文件(OutputStream) 服务器端:接收文件(InputStream),写文件(FileOutputStream) 客户端代码: pac ...
- windows环境下使用C++&Socket实现文件传输
server #include <stdio.h> #include <iostream> #include <cstring> #include <fstr ...
- Java基于Socket文件传输示例(转)
最近需要进行网络传输大文件,于是对基于socket的文件传输作了一个初步的了解.在一位网友提供的程序基础上,俺进行了一些加工,采用了缓冲输入/输出流来包装输出流,再采用数据输入/输出输出流进行包装,加 ...
- Java基于Socket文件传输示例
http://www.blogjava.net/sterning/archive/2007/10/13/152508.html 最近需要进行网络传输大文件,于是对基于socket的文件传输作了一个初步 ...
随机推荐
- [Q&A] 解决 SBT 初始化或下载 jar 包速度慢的问题
原文地址:https://www.cnblogs.com/memento/p/9153012.html 在 C:\Users\用户名\.sbt 目录下添加一个 "repositories&q ...
- weblogic系列漏洞整理 -- 4. weblogic XMLDecoder 反序列化漏洞(CVE-2017-10271、CVE-2017-3506)
目录 四. weblogic XMLDecoder 反序列化漏洞(CVE-2017-10271) 0. 漏洞分析 1. 利用过程 2. 修复建议 一.weblogic安装 http://www.cnb ...
- Fiddler抓包学习——https请求的抓取
第一步:设置Fiddler windows下安装证书 打开fiddler 查看证书是否安装 说明已安装成功 设置端口号(下面手机设置代理所需要的) 第二部 手机端安装证书 通过fiddler查看电 ...
- JMeter—监听器(十二)
参考<全栈性能测试修炼宝典JMeter实战>第六章 JMeter 元件详解中第七节监听器用来显示JMeter取样器的测试结果,能够以树.表.图形形式显示,也可以以文件方式保存. 一.设置默 ...
- oh-my-zsh安装与使用
使用oh-my-zsh之前确保安装过zsh 通过脚本安装: sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussel ...
- js,ajax,layer笔记(弹出层,在弹出一个弹框)
整体认识: 因为作用域的问题,js 在页面初次加载时已近加载好了,所以要有第二次弹窗的效果,必须得在第一次成功之后再次让他加载js 代码: /*shaun*/showdetailsPag: funct ...
- apache配置CA证书通过https通信
Apache Httpd 2.2 实现https加密通讯 实际生产中CA证书一般是向一些专业认证的国际机构来进行申请的.我们会模拟使用OpenSSL生成的证书,来实现Apache的安全加密通讯,这与实 ...
- Win10系统电脑桌面图标没有了怎么办
win10系统相对来说还是有些不稳定的,有时候打开电脑会发现,桌面上的图标不见了,遇见这种情况,先别着急,可以使用两种很简单的方法来解决. 方法一: 在桌面上右键,点击查看,看“显示桌面图标”这一项前 ...
- SSRS奇怪报错Could not update a list of fields for the quer.
今天遇到一个奇怪的问题,SSRS我觉得是个半成品,很多东西都搞不了.写了一段SQL,本来SQL写法都有点怪了,如下 WITH TMP_A AS (SELECT *,ROW_NUMBER() OVER( ...
- Ubuntu 12.10 Tty (字符终端) 显示中文,和字体大小设置
Tty通过修改默认的中文编码字符,和安装zhcon都无法显示中文.可安装fbterm来显示中文,命令:sudo apt-get install fbterm安装即可,进入Tty: (Ctrl+Alt+ ...