SendFileServer.java
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
* 用TCP进行文件传输
* 此文件为服务器文件
* 当接受到客户端的请求之后,先向其传输文件名
* 当客户端接受完毕之后,向客户端传输文件
* */
public class SendFileServer implements Runnable{
// 服务器监听端口
private static final int MONITORPORT = 12345;
private Socket s ;
public SendFileServer(Socket s) {
super();
this.s = s;
}
public static void server()
{
try {
// 创建服务器socket
ServerSocket ss = new ServerSocket(MONITORPORT);
while(true)
{
// 接收到一个客户端连接之后,创建一个新的线程进行服务
// 并将联通的socket传给该线程
Socket s = ss.accept();
new Thread(new SendFileServer(s)).start();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SendFileServer.server();
}
@Override
public void run() {
// TODO Auto-generated method stub
byte[] buf = new byte[100];
OutputStream os=null;
FileInputStream fins=null;
try {
os = s.getOutputStream();
// 文件路径
String filePath = "/home/newton/cangjie.mp3";
// 文件名
String fileName = "cangjie.mp3";
System.out.println("将文件名:"+fileName+"传输过去");
//先将文件名传输过去
os.write(fileName.getBytes());
System.out.println("开始传输文件");
//将文件传输过去
// 获取文件
fins = new FileInputStream(filePath);
int data;
// 通过fins读取文件,并通过os将文件传输
while(-1!=(data = fins.read()))
{
os.write(data);
}
System.out.println("文件传输结束");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
try {
if(fins!=null) fins.close();
if(os!=null) os.close();
this.s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
SendFileClient.java
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
/*
* 用TCP进行文件传输
* 此文件为客户端文件
* 连接上服务器之后,直接接受文件
*
* */
public class SendFileClient {
private static final String SERVERIP = "127.0.0.1";
private static final int SERVERPORT = 12345;
private static final int CLIENTPORT = 54321;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 用来接受传输过来的字符
byte[] buf = new byte[100];
Socket s = new Socket();
try {
// 建立连接
s.connect(new InetSocketAddress(SERVERIP,SERVERPORT), CLIENTPORT);
InputStream is = s.getInputStream();
// 接收传输来的文件名
int len = is.read(buf);
String fileName = new String(buf,0,len);
System.out.println(fileName);
//接收传输来的文件
FileOutputStream fos = new FileOutputStream(fileName);
int data;
while(-1!=(data = is.read()))
{
fos.write(data);
}
is.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Javatcp.zip_文件传输
版权申诉
74 浏览量
2022-09-23
16:52:20
上传
评论
收藏 1KB ZIP 举报
alvarocfc
- 粉丝: 109
- 资源: 1万+
最新资源
- postgresql-42.7.3.jar
- 2024-05-21 20-36-43.mkv
- 基于QT+C++的智能云监护仪项目,能够实时显示使用者心电、血氧、血压波形及其它各种参数+源码(毕业设计&课程设计&项目开发)
- 基于java开发的app接收硬件端传输的心音信号,具有显示心音波形,发出心音的功能+源码(毕业设计&课程设计&项目开发)
- Python 程序语言设计模式思路-行为型模式:职责链模式:将请求从一个处理者传递到下一个处理者
- 9241703124789646.16健身系统2.apk
- postgresql-16.3-1-windows-x64.exe
- Python 程序语言设计模式思路-结构型模式:装饰器讲解及利用Python装饰器模式实现高效日志记录和性能测试
- 基于YOLOv5和DeepSORT的多目标跟踪仿真与记录
- Python 程序语言设计模式思路-创建型模式:原型模式:通过复制现有对象来创建新对象,面向对象编程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈