使用TCP协议写一个可以上传文件的服务器和客户端

本文介绍了一个基于TCP协议实现的简单文件上传系统。该系统包含客户端和服务端两部分,客户端负责选择本地文件并发送至服务器,服务端接收文件并确认上传成功。通过Java编程实现了文件的数据流传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**使用TCP协议写一个可以上传文件的服务器和客户端**

TCP客户端:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
      
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/*
* 使用TCP协议写一个可以上传文件的服务器和客户端
* TCP:客户端
* 思路:
* A:创建客户端Socket对象
* B:监听连接
* C:获取输入流和输出流,读取和写入数据;写入完毕,关闭输入流,并显示
* D:释放资源
*
*/
public class Test9_Client {
public static void main(String[] args) throws Exception{
// 创建客户端的Socket对象,建立连接
Socket s=new Socket("127.0.0.1",12345);
// 获取输出流 读取数据
OutputStream out = s.getOutputStream();
// 获取输入流 写入数据
InputStream in = s.getInputStream();
//创建字节输入流对象
FileInputStream fis = new FileInputStream("d:\\aa.txt");
// 创建byte数组长度为1024
byte[] bys = new byte[1024];
int len = 0;
// 判断是否为空 ,写入数据
while((len=fis.read(bys)) != -1){
out.write(bys,0,len);
}
// 关闭输出流
s.shutdownOutput();
len = in.read(bys);
// 显示在控制台
System.out.println(new String(bys,0,len));
// 释放资源
fis.close();
s.close();
}
}
TCP服务端:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
      
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
* 使用TCP协议写一个可以上传文件的服务器和客户端
* TCP:服务端
* 思路:
* A:创建服务器端Socket对象
* B:监听连接
* C:获取输入流和输出流,读取和写入数据;并显示
* D:释放资源
*/
public class Test9_Server {
public static void main(String[] args) throws Exception{
// 创建服务器端Socket对象
ServerSocket ss = new ServerSocket(12345);
// 监听连接
Socket s = ss.accept();//阻塞
// 创建字节输出流对象
FileOutputStream fos = new FileOutputStream("d:/TcpUpload.txt");
// 获取输入流 读取数据
InputStream in = s.getInputStream();
// 获取输出流 写入数据
OutputStream out = s.getOutputStream();
// 定义byte数组 长度为1024
byte[] buf = new byte[1024];
int len = 0;
// 判断是否为空,写入数据
while((len=in.read(buf)) != -1){
fos.write(buf,0,len);
}
// 写入"upload success..."字节数组数据
out.write("upload success...".getBytes());
// 释放资源
fos.close();
s.close();
ss.close();
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值