Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.util.Scanner;
- import java.util.concurrent.Semaphore;
- public class Main {
- static Semaphore semaphore = new Semaphore(1);
- static BufferedWriter bw;
- public static void main(String[] args) throws IOException {
- bw = new BufferedWriter(new FileWriter(new File("finki.txt")));
- ServerHolder serverT = new ServerHolder();
- serverT.start();
- ClientHolder client1 = new ClientHolder("fold1");
- client1.start();
- ClientHolder client2 = new ClientHolder("fold2");
- client2.start();
- }
- static class ServerHolder extends Thread {
- ServerSocket serverSocket;
- public ServerHolder() throws IOException {
- serverSocket = new ServerSocket(3398);
- }
- @Override
- public void run() {
- Socket client;
- while (true) {
- try {
- client = serverSocket.accept();
- ServerWorker sw = new ServerWorker(client);
- sw.start();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- static class ClientHolder extends Thread {
- private File fol;
- BufferedWriter writer;
- ClientHolder(String ftoscn) throws IOException {
- this.fol = new File(ftoscn);
- }
- @Override
- public void run() {
- try {
- Integer numFINKI = rek(fol);
- writer.close();
- Socket s = new Socket("localhost", 3398);
- DataOutputStream dos = new DataOutputStream(s.getOutputStream());
- dos.writeInt(numFINKI);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public Integer rek(File fol) throws IOException {
- Integer numFINKI = 0;
- for (File f : fol.listFiles()) {
- if (f.isFile() && (f.getName().endsWith(".txt") && f.getName().endsWith(".out"))
- || (f.length() < 100 * 1024 && f.length() > 1024)) {
- Scanner input = new Scanner(f);
- while (input.hasNext()) {
- String line = input.nextLine();
- if (line.contains("FINKI")) {
- numFINKI++;
- }
- }
- } else if (f.isDirectory()) {
- rek(f);
- }
- }
- return numFINKI;
- }
- }
- static class ServerWorker extends Thread {
- private final DataInputStream dis;
- Socket soc;
- public ServerWorker(Socket c) throws IOException {
- soc = c;
- dis = new DataInputStream(c.getInputStream());
- }
- @Override
- public void run() {
- try {
- Integer numsStringFinki = dis.readInt();
- semaphore.acquire();
- bw.write(soc.getLocalAddress().toString() + " " + soc.getLocalPort() + " "
- + numsStringFinki + "\n");
- bw.flush();
- semaphore.release();
- } catch (IOException | InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement