Socket 传送文件
1.传送文本文件
1.1服务端
package com;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class FileServerSocket {
public static void main(String[] args) {
try {
File file = new File("F:\\Test\\129.mp3");
ServerSocket server = new ServerSocket(8008);
DataInputStream dataInput;
String fileMessage = "";
FileWriter fileWriter = new FileWriter(file,true);
BufferedWriter bw = new BufferedWriter(fileWriter);
Socket socket;
System.out.println("服务器已启动~~~");
socket = server.accept();
System.out.println("捕获到连接");
while(true){
dataInput = new DataInputStream(socket.getInputStream());
fileMessage = dataInput.readUTF();
bw.write(fileMessage);
bw.flush();
System.out.println(fileMessage);
if(fileMessage.equals("exit")){
System.out.println("传输完成~~~");
break;
}
}
bw.close();
dataInput.close();
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
1.2 ### 客户端
package com;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class FileSocket {
public static void main(String[] args) {
try {
File file = new File("F:\\Test\\12.mp3");
Socket socket = new Socket("127.0.0.1",8008);
OutputStream output = socket.getOutputStream();
FileReader fileReader = new FileReader(file);
BufferedReader br = new BufferedReader(fileReader);
DataOutputStream dataOutput = new DataOutputStream(output);
dataOutput.writeUTF(file.getName());
String sb = "";
System.out.println("客户端已启动");
while((sb = br.readLine()) != null){
dataOutput.writeUTF(sb);
dataOutput.flush();
}
System.out.println("客户端文件已经传送完成");
dataOutput.close();
br.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.传送其他文件
2.1 服务端
package fileSocket;
import java.io.DataInputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws EOFException {
try {
ServerSocket server = new ServerSocket(8008);
DataInputStream dataInput;
File file = new File("F:\\Test\\12_3.mp3");
FileOutputStream fileOutput = new FileOutputStream(file);
Socket socket;
System.out.println("服务器已启动~~~");
byte byte_[] = new byte[1024 * 4];
int length;
socket = server.accept();
System.out.println("捕获到连接");
dataInput = new DataInputStream(socket.getInputStream());
while((length = dataInput.read(byte_,0,byte_.length)) > 0){
fileOutput.write(byte_,0,length);
fileOutput.flush();
}
fileOutput.close();
dataInput.close();
server.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("接收完成");
}
}
2.2 客户端
package fileSocket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) {
try {
File file = new File("F:\\Test\\12.mp3");
FileInputStream fileStream = new FileInputStream(file);
Socket socket = new Socket("127.0.0.1",8008);
OutputStream output = socket.getOutputStream();
DataOutputStream dataOutput = new DataOutputStream(output);
byte[] b = new byte[1024 * 4];
System.out.println("客户端已启动");
int length;
while((length = fileStream.read(b,0,b.length)) > 0){
dataOutput.write(b,0,length);
dataOutput.flush();
}
System.out.println("客户端文件已经传送完成");
dataOutput.close();
fileStream.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Socket 传送文件的更多相关文章
- socket传送文件
一.文件传送步骤 我们要利用socket来实现下载一个文件,该如何操作呢? 服务端: 读取文件名 判断文件是否存在 检测文件大小(用于和客户端对比判断文件是否传送完毕) 发送文件大小给客户端 等待客户 ...
- socket传送文件格式的问题
在python3中socket传送文件只能传送‘bytes'类型,如下例子: import socket client = socket.socket()client.connect(("l ...
- C语言sendto()函数-经socket传送数据以及recvfrom函数《转》
相关函数:send, sendmsg, recv, recvfrom, socket 头文件:#include <sys/types.h> #include <sys/socke ...
- python socket 传输文件
推荐资料 https://www.cnblogs.com/xiaokang01/p/9865724.html socket传输文件 思路: # 先将报头转换成字符串(json.dumps), 再将字符 ...
- SZ,RZ传送文件
linux 和window之间通过xshell的命令 SZ,RZ传送文件:
- socket头文件
一. 三种类型的套接字:1.流式套接字(SOCKET_STREAM) 提供面向连接的可靠的数据传输服务.数据被看作是字节流,无长度限制.例如FTP协议就采用这种.2.数据报式套接字(SOCKET ...
- python使用简单http协议来传送文件
python使用简单http协议来传送文件!在ubuntu环境下,局域网内可以使用nc来传送文件,也可以使用基于Http协议的方式来下载文件我们可以使用python -m SimpleHTTPServ ...
- Linux SSH 远程操作与传送文件
操作系统:centos 6.5 x64 一.远程连接:在进行linux 的 ssh远程操作前,一定要确认linux 是否安装了 openssh-clients,为了方便起见,一般用yum安装即可:# ...
- Java使用Socket传输文件遇到的问题(转)
1.写了一个socket传输文件的程序,发现传输过去文件有问题.找了一下午终于似乎找到了原因,记录下来警示一下: 接受文件的一端,向本地写文件之前使用Thread.sleep(time)休息一下就解决 ...
随机推荐
- XAF-Domain Components 技术 使用接口来定义ORM业务对象
一.简介 Domain Component组件技术,以下简称DC,是扩展自XPO的, 官方不建议新手使用DC. 如果你用过EF,XPO及类似的ORM,这是很容易理解的,DC是基于XPO的,只是原业定义 ...
- .Net程序员学用Oracle系列(9):系统函数(上)
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.字符函数 1.1.字符函数简介 1.2.语法说明及案例 2.数字函数 2.1.数字函数简介 2.2.语法说明及案例 3.日期 ...
- curl命令PostJson
curl -H "Content-Type: application/json" -X POST --data '{"data":"1"} ...
- ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序
服务器上某个数据库出现' ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程'错误,要解决该问题首先查看一下数据库现有的进程数,是否已经达到参数processes的大小. 使用 ...
- JDK安装(CentOS/rpm方式)
1. 用如下命令检验是否已经自带了OpenJDK java -version 如果打印如下,则表示安装了OpenJDK java version "1.6.0" OpenJDK R ...
- hdu 1564 Play a game(博弈找规律)
题目:一个n*n的棋盘,每一次从角落出发,每次移动到相邻的,而且没有经过的格子上. 谁不能操作了谁输. 思路:看起来就跟奇偶性有关 走两步就知道了 #include <iostream> ...
- Chapter 21_3 模式
很多地方都会看到各种匹配模式,每次接触这些函数,颇使人望文生畏. 今天就来好好面对它.认识它.了解它.最后战胜它. 匹配模式都是用一串常规的字符串来描述,最主要的是理解这些字符串的语法及含义(即它能匹 ...
- 利用python3.5 构建流媒体后台音视频切换的服务端程序
#!/usr/bin/env python3.5.0 # -*- coding:utf8 -*- import os,sys,socket,hashlib,time,select,threading, ...
- ajax客户端请求与服务端响应浅谈
AJAX,即Asynchronous Javascript And XML,AJAX本质是在HTTP协议的基础上以异步的方式与服务器进行通信. 所谓的异步,是指某段程序执行不会阻塞其他程序执行,其表现 ...
- 在Eclipse中用TODO标签管理任务(Task)
Elipse为Java项目的时候,有一个很人性化的“任务管理”功能,利用这个功能可以方便地将项目中一些需要处理的任务记录下来.先来看看“任务管理”是怎么使用的吧.下面这个类在Class和name 属性 ...