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

  1. 洗礼灵魂,修炼python(86)--全栈项目实战篇(12)—— 利用socket实现文件传输/并发式聊天

    由于本篇博文的项目都很简单,所以本次开个特例,本次解析两个项目,但是都很简单的 项目一:用socket实现文件传输 本项目很简单,作为小项目的预热的,前面刚学完socket,这里马上又利用socket ...

  2. Java简单文件传输 socket简单文件传输示例

    服务器端代码: import java.io.*; import java.net.*; /** * Created with IntelliJ IDEA. * User: HYY * Date: 1 ...

  3. socket实现文件传输

    server:===========================================import socketimport structimport jsonsk = socket.s ...

  4. python socket实现文件传输(防粘包)

    1.文件传输的要点: 采用iterator(迭代器对象)迭代读取,提高读取以及存取效率: 通过for line in file_handles逐行conn.send(): 2.socket粘包问题: ...

  5. Java开发笔记(一百一十五)使用Socket开展文件传输

    前面介绍了怎样通过Socket在客户端与服务端之间传输文本,当然Socket也支持在客户端与服务端之间传输文件,因为文件本身就是通过I/O流实现读写操作的,所以在套接字的输入输出流中传输文件真是再合适 ...

  6. Java学习笔记——Socket实现文件传输

    我越是逃离,却越是靠近你. 我越是背过脸,却越是看见你. 我从你开始, 我在你结束. 需求:实现局域网下socket传输文件. 客户端步骤: 1.建立与服务器的连接 2.创建client输出流 3.创 ...

  7. JAVA Socket:文件传输

    客户端:读取文件(FileInputStream),发送文件(OutputStream) 服务器端:接收文件(InputStream),写文件(FileOutputStream) 客户端代码: pac ...

  8. windows环境下使用C++&Socket实现文件传输

    server #include <stdio.h> #include <iostream> #include <cstring> #include <fstr ...

  9. Java基于Socket文件传输示例(转)

    最近需要进行网络传输大文件,于是对基于socket的文件传输作了一个初步的了解.在一位网友提供的程序基础上,俺进行了一些加工,采用了缓冲输入/输出流来包装输出流,再采用数据输入/输出输出流进行包装,加 ...

  10. Java基于Socket文件传输示例

    http://www.blogjava.net/sterning/archive/2007/10/13/152508.html 最近需要进行网络传输大文件,于是对基于socket的文件传输作了一个初步 ...

随机推荐

  1. Django中使用bookstarp框架(4)

    Django中使用bookstarp框架(4) 注意:要使用bookstarp框架前,要先有css的基础 因为主要是研究后台的使用方法,就引入前端的框架,简化html上的耗时(主要是不想把时间浪费在前 ...

  2. [20171120]关于find 软连接问题.txt

    [20171120]关于find 软连接问题.txt --//上个星期为了测试oracle参数filesystemio_options,将数据库做了一次移动.但是我使用find对软链接目录查询时--/ ...

  3. 线程:生命周期、实现方式、start()和run()的区别!

    1.线程的生命周期 要想实现多线程,必须在主线程中创建新的线程对象.Java语言使用Thread类及其子类的对象来表示线程,在它的 一个完整的生命周期中通常要经历如下的五种状态: 新建:当一个Thre ...

  4. 第 15 章 位操作(fields)

    /*----------------------------------- fields.c -- 定义并使用字段 -----------------------------------*/ #inc ...

  5. 使用requests模块保存网络上的图片

    import requests url = 'https://www.baidu.com/img/bd_logo1.png' r = requests.get(url=url) with open(' ...

  6. 最大子序和的golang实现

    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 输入: [-,,-,,-,,,-,], 输出: 解释: 连续子数组 [,-,,] 的和最大,为 ...

  7. Source Insight4 破解安装

    首先确保你在官网下载了原版4.0并安装好了. 1,下载如下的sourceinsight4.exe文件,替换安装文件夹下的sourceinsight4.exe. 链接:http://pan.baidu. ...

  8. ArcGIS栅格影像怎么从WGS84地理坐标转成Xian80投影坐标

    事情是这样的,我下载了一个WGS84坐标系的影像图,需要加载到Xian80投影坐标系下,所以需要对影像图进行坐标系的转换 1.因为涉及到两个参考椭球的问题,首先需要计算七参数,如何计算七参数,请参考我 ...

  9. 监控nginx

    vi nginx_status.sh #!/bin/bash HOST="127.0.0.1" PORT="9222" # 检测nginx进程是否存在 func ...

  10. view 的用法

    MATLAB提供了设置视点的函数view.其调用格式为:       view(az,el)az是azimuth(方位角)的缩写,EL是elevation(仰角)的缩写.它们均以度为单位.系统缺省的视 ...