使用TCP协议写一个可以上传文件的服务器和客户端
Posted 暴走灬青春
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用TCP协议写一个可以上传文件的服务器和客户端相关的知识,希望对你有一定的参考价值。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;
public class Test7_Client
/**
* 7、使用TCP协议写一个可以上传文件的服务器和客户端。
* 分析:
* InputStreamReader字符与字节转化的桥梁
* 输出流用PrintStream 更方便
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException
//获取需要上传的文件路径
File file = getFile();
//连接服务器 建立读写流
Socket socket = new Socket("127.0.0.1",6060);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintStream ps = new PrintStream(socket.getOutputStream());
//将文件路径 输出 给服务器
ps.println(file.getName());
String result = br.readLine();
if ("文件已经存在!".equals(result)) //判断服务器上是否已经有了此文件,如已存在则不用上传
System.out.println("文件已经存在,请不要重复上传!");
socket.close();
return;
//服务器上不存在此文件,建立输入流
FileInputStream fis = new FileInputStream(file);
byte arr[] = new byte[8192]; //高效传输
int len;
while((len = fis.read()) != -1)
ps.write(arr, 0, len);
fis.close(); //关流关连接
socket.close();
/**
* 获取上传的文件路径
* @return File
*/
public static File getFile()
Scanner sc = new Scanner(System.in);
System.out.println("输入文件路径:");
//判断要上传的文件路径是否存在
while(true)
String line = sc.nextLine();
File file = new File(line);
if(!file.exists())
System.out.println("文件路径不存在!请重输:");
else if (file.isDirectory())
System.out.println("输入的是文件夹路径!请重输:");
else
return file;
以上是关于使用TCP协议写一个可以上传文件的服务器和客户端的主要内容,如果未能解决你的问题,请参考以下文章