Verkapselung von Klasse?

Hallo Coder-Freunde,

meine Freundin hat in einer Übung für die Uni folgende Java-Aufgabe zu lösen:

// ähnlich java.io.File.listFiles(), gibt aber nicht ein Array sondern ein Filez-Objekt zurück, das die File-Objekte des Directory als List<File> verkapselt

public static Filez create(File directory);

Folgendes haben wir bisher gemacht:

class Filez {

public Filez() {

this.list = new ArrayList<File>();

}

public static Filez create(File directory) { // File directory ist ein Objekt mit dem Pfad zum zu durchsuchenden Verzeichnis.

//List<File> list = new ArrayList<File>();

File[] filesAndDirs = directory.listFiles();

// Daten aus Array werden zu Liste hinzugefügt

for(int i = 0; i < filesAndDirs.length; i++) {

list.add(i, filesAndDirs[i]);

System.out.println(i + ": " + list.get(i));

}

return XXXXX; // Hier hängt's... wie soll eine Liste als Filez-Objekt zurückgegeben werden?

}

}

Mir persönlich erschließt sich die Formulierung "[... gibt ein] Filez-Objekt zurück, das die File-Objekte des Directory als List<File> verkapselt" nicht. Wie soll eine Methode als Returnwert ein Filez-Objekt vom Typ list zurückgeben?

Wir stehen hier auf dem Schlauch, bitte Hilfe!

UPDATE:

Antwort, falls jemand ein ähnliches Problem hat: Konstruktor erstellen!

public Filez() {} oder public Filez(List<File> attrList) { this.list = attrList; }

Return von create() ist dann das gesamte Objekt.

Computer, programmieren, Java, OOP Programmierung
Python Socket Encoding Error?
Hi, jedesmal wenn ich versuche mit dem Client eine Nachricht zu senden stürzt mir der Server ab. 

import socket
import threading


class TxtSocket:
    
    def __init__(self, host=socket.gethostbyname(socket.gethostname()) , port=5555, connection = 0, disconnect="!DISCONNECT"):
        self.host = host
        self.port = port
        self.connection = connection
        self.disconnect = disconnect
        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.s.bind((self.host, self.port))
        print("Socket was created")


    def handle(self, conn, addr):
        while True:
            connection = threading.active_count() -1
            print(f"Connections: {connection}")
            data = conn.recv(1024).decode("utf8")
            if data == self.disconnect:
                conn.close()


            elif not data:
                break
            addr = str(addr[0])
            addr.encode()
            data.encode()
            print(type(data))
            print(type(addr))
            print(f"{addr}: {data}")
            self.s.send(addr[0], data)
        


    def server(self):
        self.s.listen(26)
        print("Server is listening")
        while True:
            conn, addr = self.s.accept()
            print(f"{addr} is now connected.")
            t = threading.Thread(target=self.handle, args=(conn, addr))
            t.start()
        


if __name__ == "__main__":
    txtsocket = TxtSocket()
    txtsocket.server()
 


#Client      
import socket


def Text():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((socket.gethostbyname(socket.gethostname()), 5555))
    print("Connected")
    while True:
        message = input("Deine Nachricht: ")
        message = message.encode("utf8")
        s.send(message)
Text()

ERROR:

Socket was created

Server is listening

('10.0.0.11', 55353) is now connected.

Connections: 1

<class 'str'>

<class 'str'>

10.0.0.11: s

Exception in thread Thread-1:

Traceback (most recent call last):

 File "C:\Users\Tobias\AppData\Local\Programs\Python\Python39\lib\threading.py", line 954, in _bootstrap_inner

  self.run()

 File "C:\Users\Tobias\AppData\Local\Programs\Python\Python39\lib\threading.py", line 892, in run

  self._target(*self._args, **self._kwargs)

 File "C:\Users\Tobias\OneDrive\Python\Server.py", line 30, in handle

  self.s.send(addr[0], data)

TypeError: a bytes-like object is required, not 'str'

Computer, programmieren, Informatik, Python
Aufteilung des Heimnetzes in verschiedene Bereiche?

Hallo zusammen!

Ich würde gerne folgendes bewerkstelligen (mir stehen zwei Fritzboxen zur Verfügung):

1. DMZ einrichten

  • Router 1 ist die Schnittstelle zwischen WAN und DMZ (sagen wir 192.168.0.1 mit 255.255.255.0); kein DHCP
  • Router 2 ist Schnittstelle zwischen DMZ und WAN (sagen wir 192.168.0.254 in Netz von Router 1 und 192.168.178.1 mit 255.255.255.0 im privaten Netz) mit Router 1 als Modem; Router 2 vergibt die Adressen im privaten Netz mittels DHCP

Das bekomme ich bestimmt hin. In der DMZ möchte ich dann z. B. meinen Home Assistant einbinden, so dass er dauerhaft auf das Internet zugreifen kann, aber nicht auf das Heimnetzwerk.

Erste Frage:

Kann ich vom privaten Netzwerk direkt auf Geräte der DMZ zugreifen (z. B. 192.168.0.15)?

2. IP-Kameras hinzufügen

Nun möchte ich außerdem Überwachungskameras ins Netzwerk integrieren. Da ich diese in den Home Assistant integrieren möchte, müssten sie mutmaßlich auch in der DMZ liegen. Sie sollen jedoch ausschließlich in der DMZ arbeiten dürfen, das heißt jegliches "Nach-Hause-Telefonieren" zu irgendwelchen Drittservern soll unterbunden werden wie auch der Aufruf aus dem Internet.

Zweite Frage:

Reicht es die Kameras in der DMZ zu platzieren oder benötige ich hierfür ein drittes Netz? Wenn Letzteres, wie gewährleiste ich die gegenseitige Erreichbarkeit von Home Assistant und Kameras?

Dritte Frage:

Kann bei einer Fritzbox die Internetznutzung der Kameras unterbunden werden?

Danke schon mal für eure Unterstützung!

Computer, Technik, Netzwerk, netzwerksicherheit, Firewall, FRITZ!Box, Router, Technologie, subnetting, Subnetz

Meistgelesene Beiträge zum Thema Computer