基于JAVASE TCP协议本地端口实现“发送与接受文件” 服务器不关闭
客户端
package com.itheima575;
import java.io.*;
import java.net.Socket;在这里插入代码片在这里插入代码片
public class Client {
public static void main(String[] args) throws IOException {
Socket s = new Socket("自己IP地址", 10010);
BufferedReader br = new BufferedReader(new FileReader("自学byIdea\\test1.txt"));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
bw.flush();
}
s.shutdownOutput();
BufferedReader brclient = new BufferedReader(new InputStreamReader(s.getInputStream()));
String data = brclient.readLine();
System.out.println("服务器反馈:" + data);
br.close();
s.close();
}
}
服务端
package com.itheima575;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(10010);
while (true) {
Socket s = ss.accept();
ThreadDemo r = new ThreadDemo(s);
new Thread(r).start();
}
}
}
服务器不关闭线程类
package com.itheima575;
import java.io.*;
import java.net.Socket;
public class ThreadDemo implements Runnable {
private Socket s;
public ThreadDemo(Socket s) {
this.s = s;
}
public ThreadDemo() {
}
@Override
public void run() {
BufferedWriter bw = null;
try {
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
int count = 0;
File f = new File("自学byIdea\\copy[" + count + "].txt");
while (f.exists()){
count++;
f = new File("自学byIdea\\copy[" + count + "].txt");
}
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f)));
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
bw.flush();
}
BufferedWriter bwserver = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bwserver.write("接收文件成功");
bwserver.newLine();
bwserver.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}