Socket MultiThreading

Diskutiere MultiThreading im Netzwerkprogrammierung Bereich.
C

chrism120

Servus,
ich habe ein kleines Programm geschrieben. Das hat 3 Funktionalitäten. ich versuche ein Thread zu verwenden allerdings ich habe vorher nie damit zu tun gehabt. Obwohl ich im Internet viel Dokumente darüber gelesen , finde ich immer noch n icht wie ich das machen könnte. kann jemand mir bitte deutlich erklärung , wie diese Multithreading funktioniert und wie ich dieses Problem lösen könnte. Danke im Voraus für Ihr Teilnahme
 
H

httpdigest

Welches Problem denn überhaupt? Aktuell sagst du nur: "Ich habe ein Programm mit drei Funktionalitäten. Und jetzt Multithreading."
 
C

chrism120

Das ist das Programm und möchte dieses in einem Thread ausführen
Java:
   public static void netscann() {
        Scanner Sc = new Scanner (System.in);
        // defines the Adress
        String IP = "172.20.100";
        //Defines the Delay
        int timeout = 1000;
        for (int i = 1; i <= 254; i++) {
            try {
                String host = IP + "." + i;
                // Intance of IP Address
                InetAddress ad = InetAddress.getByName(host);
                // Erreichbarkeit der Hosts laut Timeout
                if (ad.isReachable(timeout))
                    System.out.println("The  Computer " + ad.getCanonicalHostName() + " with this address " + host + " ist reachable");
            } catch (Exception e) {
            }
        }
    }
 
K

kneitzel

Also erst einmal läuft dies bereits in einem Thread. Du meinst vermutlich, dass Du es in mehreren Threads ausführen möchtest, damit es schneller geht.

Einführung Threads: http://openbook.rheinwerk-verlag.de/javainsel/15_002.html

Aufbau wäre dann aus meiner Sicht, dass Du eine Klasse hast, die den Arbeitsvorrat bereit hält. Die Threads, die Du startest, holen sich dann alle jeweils aus dem Arbeitsvorrat einen Task und führen diesen aus. So würde ich dies machen.

Arbeitsvorrat ist halt die Prüfung der jeweiligen IPs.
 
mihe7

mihe7

Mal ein Beispiel mit Streams:
Java:
import java.net.InetAddress;
import java.util.stream.IntStream;
import java.util.Scanner;

public class Test {
    public static void netscann() {
        Scanner Sc = new Scanner (System.in);        
        // defines the Adress
        String IP = "192.168.178.";
        //Defines the Delay
        int timeout = 1000;
        IntStream.range(1, 255).parallel().mapToObj(i -> IP+i).forEach(host -> check(host, timeout));
    }

    public static void check(String host, int timeout) {
        try {
            InetAddress ad = InetAddress.getByName(host);
            if (ad.isReachable(timeout))
                System.out.println("The  Computer " + ad.getCanonicalHostName() + " with this address " + host + " ist reachable");
        } catch (Exception e) {
        }
    }

    public static void main(String[] args) {
        Test.netscann();
    }
}
 
C

chrism120

Also erst einmal läuft dies bereits in einem Thread. Du meinst vermutlich, dass Du es in mehreren Threads ausführen möchtest, damit es schneller geht.

Einführung Threads: http://openbook.rheinwerk-verlag.de/javainsel/15_002.html

Aufbau wäre dann aus meiner Sicht, dass Du eine Klasse hast, die den Arbeitsvorrat bereit hält. Die Threads, die Du startest, holen sich dann alle jeweils aus dem Arbeitsvorrat einen Task und führen diesen aus. So würde ich dies machen.

Arbeitsvorrat ist halt die Prüfung der jeweiligen IPs.
Ganz elementar könnte man hier hereinschauen: http://openbook.rheinwerk-verlag.de...14_002.htm#mj45ef6b526108a654e748170e45b47506 und https://howtodoinjava.com/java-concurrency-tutorial/ Und die Funktion soll wohl als Ganzes in einem Thread ausgeführt werden.
danke
 
C

chrism120

Mal ein Beispiel mit Streams:
Java:
import java.net.InetAddress;
import java.util.stream.IntStream;
import java.util.Scanner;

public class Test {
    public static void netscann() {
        Scanner Sc = new Scanner (System.in);       
        // defines the Adress
        String IP = "192.168.178.";
        //Defines the Delay
        int timeout = 1000;
        IntStream.range(1, 255).parallel().mapToObj(i -> IP+i).forEach(host -> check(host, timeout));
    }

    public static void check(String host, int timeout) {
        try {
            InetAddress ad = InetAddress.getByName(host);
            if (ad.isReachable(timeout))
                System.out.println("The  Computer " + ad.getCanonicalHostName() + " with this address " + host + " ist reachable");
        } catch (Exception e) {
        }
    }

    public static void main(String[] args) {
        Test.netscann();
    }
}
ok danke :cool::cool::):):)
 
Thema: 

MultiThreading

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben