Typumwandlung
-
Hallo NG,
ich habe ein paar Netzwerksockets, die ich mit Descriptoren überwache. Nun muß ich ein Dateidescriptor von Typ FILE* mitüberwachen. Aber FSET will ein int haben. Der Inhalt von FILE* ist vom Typ _IO_FILE. Mittlerweile weiß ich, das _IO_FILE ein struct ist. Nun weiß ich auch, das _IO_FILE ein Stream darstellt. Kann ich das überhaupt mit select überwachen?
Also gibt es da überhaupt einen Descriptor?
Ich habs

fd_set descriptorSet; int network_1; ... int network_n; FILE* important; int fileDescriptor; //////////////////// So...!!! network_1 = socket(AF_INET, SOCK_STREAM, 0); FD_SET(network_1, descriptorSet); ... network_n = socket(AF_INET, SOCK_STREAM, 0); FD_SET(network_n, descriptorSet); important = fopen ( "~/important.file", "rb" ); fileDescriptor = fileno(important); //////////////////// ...so...!!! FD_SET(fileDescriptor, descriptorSet); ///////////////////// ...und so!!!Gruß M. Incani
-
Um ehrlich zu sein verstehe ich deine Frage nicht komplett, da ich die Funktion FD_SET nicht kenne. Anscheinend ist diese die entscheidente Funktion zum überwachen eines Sockets bzw. du möchtest anscheinend Daten übers Netz mittels den Sockets einlesen. Und nun willst du ein File Handle in ein Socket Descriptor unwandeln und ich bin mir nicht sicher ob das C++ unterstützt.
Ich würde alternativ mal schauen ob man die Datei auch mittels eines Sockets öffnen kann. Die Adresse kann sicherlich auch so umbiegen, dass sie auf die gewünschte Datei localhost@./important.file zeigt.
-
Bitte ein Bit schrieb:
Um ehrlich zu sein verstehe ich deine Frage nicht komplett, da ich die Funktion FD_SET nicht kenne. Anscheinend ist diese die entscheidente Funktion zum überwachen eines Sockets bzw. du möchtest anscheinend Daten übers Netz mittels den Sockets einlesen. Und nun willst du ein File Handle in ein Socket Descriptor unwandeln und ich bin mir nicht sicher ob das C++ unterstützt.
Ich würde alternativ mal schauen ob man die Datei auch mittels eines Sockets öffnen kann. Die Adresse kann sicherlich auch so umbiegen, dass die auf dei gewünschte Datei localhost@./important.file zeigt.
So entscheident ist FD_SET nicht, sondern select. FD_SET brauche ich nur um select zu sagen welchen Socket es überwachen soll. Und ich weiß nicht, ob alle Operationen die auf Streams gemacht werden können auch auf Sockets gemacht werden können. Wenn ja, kann ich das ganze auch auf Sockets unstellen.
Gruß,
M. Incani
-
open statt fopen verwenden