哎呀,我们还是直接放代码吧
客户端代码
package com.wangLuo;
import java.io.*;
import java.net.Socket;
/**
* @author 林高禄
* @create 2020-06-01-10:24
*/
public class TCPClientDemo {
public static void main(String[] args) throws IOException {
Socket s = new Socket("192.168.1.55",10);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader br = new BufferedReader(new FileReader("test//src//com//wangLuo//《国富论》全本.txt"));
String line;
while((line = br.readLine()) != null){
bw.write(line);
bw.newLine();
bw.flush();
}
// 向服务端表明数据发送完毕
s.shutdownOutput();
BufferedReader br1 = new BufferedReader(new InputStreamReader(s.getInputStream()));
System.out.println(br1.readLine());
br.close();
s.close();
}
}
服务端线程代码,这是主要的代码,线程处理写入文件操作,并且给客户端做出响应
package com.wangLuo;
import java.io.*;
import java.net.Socket;
/**
* @author 林高禄
* @create 2020-06-01-10:28
*/
public class TCPServerDemoThread implements Runnable{
private Socket s;
private int count;
public TCPServerDemoThread(Socket s, int count) {
this.s = s;
this.count = count;
}
@Override
public void run() {
BufferedWriter bw = null;
BufferedWriter bw1 = null;
try {
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
bw = new BufferedWriter(new FileWriter("test//src//com//wangLuo//《国富论》全本copy【"+count+"】.txt"));
String line;
while((line = br.readLine()) != null){
bw.write(line);
bw.newLine();
bw.flush();
}
bw1 = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw1.write("文件上传成功");
bw1.newLine();
bw1.flush();
}catch (IOException e){
e.printStackTrace();
}finally {
if(bw != null){
try{
bw.close();
}catch (IOException e){
e.printStackTrace();
}
}
if(bw1 != null){
try{
bw1.close();
}catch (IOException e){
e.printStackTrace();
}
}
if(s != null){
try{
s.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
}
}
服务端代码,while循环,每次客户端请求,就调用一次服务端线程,计数增加,这样一个客户端请求就是一个文件,不会造成文件覆盖。
package com.wangLuo;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @author 林高禄
* @create 2020-06-01-10:28
*/
public class TCPServerDemo {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(10);
int count = 0;
while(true){
count++;
Socket s = ss.accept();
System.out.println("count==="+count);
new Thread(new TCPServerDemoThread(s,count)).start();
}
}
}
代码完毕,指向服务端,再执行客户端,客户端每次请去就上传一个文件,服务端一直运行。