diff --git a/pom.xml b/pom.xml index f637ab44f42b984b055e5e068740db81f5249d52..e642a6397bb047193190ffec7debee0745883946 100644 --- a/pom.xml +++ b/pom.xml @@ -33,5 +33,12 @@ <version>5.5.2</version> <scope>test</scope> </dependency> + <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --> + <dependency> + <groupId>org.jsoup</groupId> + <artifactId>jsoup</artifactId> + <version>1.17.1</version> + </dependency> + </dependencies> </project> diff --git a/src/main/java/lab12/App.java b/src/main/java/lab12/App.java new file mode 100644 index 0000000000000000000000000000000000000000..cc9e7f6bb89a4f517dc7b02f64edf1564a932ca0 --- /dev/null +++ b/src/main/java/lab12/App.java @@ -0,0 +1,13 @@ +package lab12; + +public class App { + + public static void main(String[] args) { + while(true) { + String val = System.in.toString(); + System.out.println(val); + } + + } + +} diff --git a/src/main/java/lab12/ClientApp.java b/src/main/java/lab12/ClientApp.java new file mode 100644 index 0000000000000000000000000000000000000000..7a718511efd03b9d34588d35fd21331a9f08a8d4 --- /dev/null +++ b/src/main/java/lab12/ClientApp.java @@ -0,0 +1,31 @@ +package lab12; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.Socket; + +public class ClientApp { + public static void main(String[] args) { + try (Socket soc = new Socket(args[0],Integer.parseInt(args[1])); + PrintWriter pw = new PrintWriter(soc.getOutputStream()); + BufferedReader br = new BufferedReader(new InputStreamReader(soc.getInputStream()));) + { + BufferedReader brc = new BufferedReader(new InputStreamReader(System.in)); + String line; + do { + line = brc.readLine(); + pw.println(line); + pw.flush(); + String lineFromServer = br.readLine(); + System.out.println(lineFromServer); + + } while (!"quit".equals(line)); + System.out.println(br.readLine()); + + } catch (NumberFormatException | IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/lab12/ImgDownloader.java b/src/main/java/lab12/ImgDownloader.java new file mode 100644 index 0000000000000000000000000000000000000000..eb48e837da33042bcaaa8e716e83d86ae6233470 --- /dev/null +++ b/src/main/java/lab12/ImgDownloader.java @@ -0,0 +1,56 @@ +package lab12; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URL; +import java.net.URLConnection; +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +public class ImgDownloader { + + public static void main(String[] args) throws IOException { + Document doc = Jsoup.connect(args[0]).get(); + Elements elements = doc.select("img[src]"); + for (Element el: elements) { + String imgUrl = el.attr("abs:src"); + System.out.println(imgUrl); + new Thread(() -> downloadImg(imgUrl, args[1])); + + } + + } + + private static void downloadImg(String imgUrl, String pathDir) { + + URL url; + try { + url = new URL(imgUrl); + String fileName =url.getPath(); + fileName = fileName.substring(fileName.lastIndexOf("/") + 1); + URLConnection connection = url.openConnection(); + + try (InputStream is = connection.getInputStream() ){ + Path path = Paths.get(pathDir, fileName); + try (OutputStream os = new FileOutputStream(path.toFile())) { + byte[] buffer = new byte[2048]; + int len; + while (-1 != (len = is.read(buffer))) { + os.write(buffer, 0, len); + } + } + } + } catch (IOException e) { + e.printStackTrace(); + } + + } + +} diff --git a/src/main/java/lab12/ServerApp.java b/src/main/java/lab12/ServerApp.java index 71acf9468c7e167310ac54cbed4d6245bdb41026..dbb53c80ba091c81e725f60441897f35972a9482 100644 --- a/src/main/java/lab12/ServerApp.java +++ b/src/main/java/lab12/ServerApp.java @@ -24,9 +24,10 @@ public class ServerApp { protected void listen() { System.out.println("Server started and ready to connection"); while (true) { - try(Socket socketFromClient = server.accept()) { + try { + Socket socketFromClient = server.accept(); System.out.println("Client connected: " + socketFromClient.getInetAddress()); - new ServerComunicator(socketFromClient).handle(); + new Thread(() -> new ServerComunicator(socketFromClient).handle()).start(); } catch (IOException e) { e.printStackTrace(); } diff --git a/src/main/java/lab12/ServerComunicator.java b/src/main/java/lab12/ServerComunicator.java index 5369ecceff93cf4f416f0255a0bba2e85a591365..87f800572170475e4962e8370b0d5f9de0c9adf3 100644 --- a/src/main/java/lab12/ServerComunicator.java +++ b/src/main/java/lab12/ServerComunicator.java @@ -31,6 +31,7 @@ public class ServerComunicator { writerToClentSocket.write("May the Java be with you."); writerToClentSocket.newLine(); writerToClentSocket.flush(); + this.socket.close(); } catch (IOException e) { e.printStackTrace(); } diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index d2fa239323165c5fb8c791a663d3f983cfcdd5ef..27fc2b6f83e5af29894b19223e3a41e1d44ae9cb 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -1,4 +1,5 @@ module cz.jezek.lab12 { opens lab12 to javafx.fxml; exports lab12; + requires org.jsoup; } \ No newline at end of file