客户端:数据来自文本文件,接收服务器反馈
服务端: 接收的数据写入文本文件, 给出反馈, 代码用线程进行封装,为每个客户端开启一个线程
服务器端
public class ServerDemo {
public static void main(String[] args) throws IOException {
//1.创建服务器的Socket对象(ServerSocket)
ServerSocket ss = new ServerSocket(1245);
while (true) {
//监听客户端连接,返回一个Socket对象
Socket s = ss.accept();
//为每个客户端开启一个线程
new Thread(new ServerThread(s)).start();
}
}
}
客户端
public class ClientDemo {
public static void main(String[] args) throws IOException {
// 创建客户端的Socket对象(Socket)下`
Socket s = new Socket("192.168.40.1", 1245);
//封装文本文件数据
BufferedReader br=new BufferedReader(new FileReader("InternetModule\\InetAddressDemo.java"));
//封装输出流写数据
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);
//释放资源
s.close();
br.close();
}
}
多线程的类
public class ServerThread implements Runnable {
private Socket s;
public ServerThread(Socket s) {
this.s = s;
}
@Override
public void run() {
//接收数据写到文本文件
try {
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
//BufferedWriter bw=new BufferedWriter(new FileWriter("InternetModule\\Copy4.java"));
//解决名称冲突问
int count = 0;
File file=new File("InternetModule\\Copy4["+count+"].java");
if (file.exists()){
count++;
file=new File("InternetModule\\Copy4["+count+"].java");
}
BufferedWriter bw=new BufferedWriter(new FileWriter(file));
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();
//释放资源
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}