package Test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
/**
* 5.使用TCP协议,分别编写服务端和客户端,要求客户端向服务端上传文件。
* @author Administrator
*/
public class Test05 {
//客户端
public static void main(String[] args) throws IOException {
//创建客户端端点对象,并确定服务端的ip及端口号;
Socket s = new Socket("localhost",8970);
//获取通道输出流对象,给服务端发送数据。
OutputStream ost = s.getOutputStream();
//将字节输出流转换成字符输出流
OutputStreamWriter ops = new OutputStreamWriter(ost);
//利用字符缓冲流提高效率
BufferedWriter bfw = new BufferedWriter(ops);
//创建字符输入流
FileReader fr = new FileReader("d:\\1.txt");
//读取本地磁盘的文件
char [] by = new char [1024];
int len = 0 ;
while((len = fr.read(by)) != -1) {
bfw.write(by, 0, len);
bfw.newLine();
bfw.flush();
}
fr.close();
//告诉服务端数据已发送完成
System.out.println("数据已发送完毕");
s.shutdownOutput();
//获取服务端反馈的数据
BufferedReader bfd = new BufferedReader(new InputStreamReader(s.getInputStream()));
String line = bfd.readLine();
System.out.println(line);
//关闭客户端
s.close();
}
}
package Test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 使用TCP协议,分别编写服务端和客户端,要求客户端向服务端上传文件。
* @author Administrator
*/
public class Test06 {
/**
* 服务端
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//创建服务端端点对象,并自定义端口号。
ServerSocket ss = new ServerSocket(8970);
//接收客户端
Socket s = ss.accept();
//获取ip
String ip = s.getInetAddress().getHostAddress();
//获取输入流,读取客户端给服务端发送的数据
BufferedReader bfr = new BufferedReader(new InputStreamReader(s.getInputStream()));
//创建输出流对象,将数据写入到本地磁盘
BufferedWriter bfd = new BufferedWriter(new FileWriter("d:\\"+ip+".txt"));
String line = null;
while((line = bfr.readLine()) != null) {
bfd.write(line);
bfd.newLine();
bfd.flush();
}
System.out.println("文件保存成功");
bfd.close();
//给客户端发送数据
BufferedWriter bfd2 = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bfd2.write("文件上传成功");
bfd2.flush();
s.close();
}
}
服务端还可以添加线程,实现多个客户端同时向服务端传递数据