Socket 传送文件
2024-10-14 18:34:14
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();
}
}
}
最新文章
- html5中新增的form表单属性
- Java反编译插件JODE介绍
- 通过源码分析MyBatis的缓存
- 《Effective STL中文版》前言
- 如何利用svn自动同步更新到网站服务器
- 一个简单的以User权限启动外部应用程序(用NetUserAdd函数和USER_INFO_1结构体动态添加用户,然后用CreateProcessWithLogonW启动程序)
- 《InsideUE4》UObject(三)类型系统设定和结构
- 在vim下写python 会出现python错误:unexpected unident
- 国内5款优秀的WEB前端框架
- javascript 偏移量
- 浙大pat1009题解
- Java 数据类型在实际开发中应用二枚举
- Maven安装和使用
- python操作pymysql数据库
- python:循环定义、赋值多个变量
- 待解决close
- linux系统下shell命令中的sleep
- Xcode常见快捷键
- asp.net core在linux上的部署调试
- 创建和运行Java项目
热门文章
- 揭开Html 标签的面纱,忘不了的html .
- 创建和使用SQL Server SSAS本地多维数据集
- twemproxy接收流程探索——twemproxy代码分析正编
- nginx错误:unknown directive ";锘? in F:\nginx/conf/nginx.conf:3
- 正则表达式之js检验密码强度
- iOS之Xcode 8.0真机调试运行:This ** is running iOS 10.1.1 (14B100), which may not be supported
- 毕向东_Java基础视频教程第19天_IO流(11~14)
- MATLAB编译器
- Spark 源码解读 -- 依赖
- java知识点梳理