客户端
package cn.itcast.net.tcp.uploadtext;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class UpLoadTextClient {
/**
* @author 青衫静水
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException, IOException {
/*
* 需求:这是一个实现文件上传的客户端程序
*/
System.out.println("客户端已经运行了!");
//1 建立socket对象
Socket s = new Socket("192.168.1.150",10000);
//2 建立要上传的数据源。
File file = new File("tempfile\\lgh.txt");
if(!file.exists())
{
throw new FileNotFoundException("文件不存在!");
}
BufferedReader bfr = new BufferedReader( new FileReader(file));
//3 通过socket对象获取写出流 这里用到了PrintWriter
PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
//4 将本地文件读入到socket写出流中。
String line = null;
while((line =bfr.readLine())!=null)
{
pw.println(line);
}
//使用socket的禁用输出流的方法
s.shutdownOutput();
//5 获取服务器端返回的数据
BufferedReader br= new BufferedReader(new InputStreamReader(s.getInputStream()));
String server_str=br.readLine();
System.out.println(server_str);
br.close();
bfr.close();
}
}
服务器端
package cn.itcast.net.tcp.uploadtext;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class UpLoadTextServer {
/**
*@author 青衫静水
* @param args
*
* @throws IOException
*/
public static void main(String[] args) throws IOException {
/*
* 需求:上传文本的服务器端
*/
System.out.println("服务器端已经运行了");
//1 创建ServerSocket对相关
ServerSocket ss = new ServerSocket(10000);
//2 通过 ServrSocket对象获取Socket对象
Socket s = ss.accept();
//3 通过Socket对象获取输入流读入数据
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
//4 明确在服务器端存储的位置
BufferedWriter bw = new BufferedWriter(new FileWriter("tempfile\\upedlgh.txt"));
// 5 获取数据存储到服务器端
String line = null;
while((line=br.readLine())!=null)//读会一直存在
{
bw.newLine();
bw.write(line);
//bw.flush();
}
//6 返回给客户端上传成功的提示
PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
pw.write("上传成功");
//关闭资源
pw.close();
br.close();
bw.close();
s.close();
ss.close();
}
}