3 Stimmen

Müssen nicht blockierende benannte Pipes haben, die zu einer Kommunikation in beide Richtungen fähig sind in c auf Linux

Ich möchte einen Server und einen Client erstellen (zwei separate Programme), bei dem der Server zwei benannte Pipes erstellt (ich denke, das ist das Minimum für bidirektionalen Datenverkehr) und dann wird der Client gestartet. Client und Server sollten in der Lage sein, Daten in beide Richtungen zu senden und zu empfangen, die ganze Zeit über (vollständige Duplex-Typen). Ich denke, das würde erfordern, dass ich nicht-blockierende benannte Pipes habe. Ich würde gerne etwas Hilfe haben, da ich es geschafft habe, eine halbduplexartige Kommunikation zu erstellen, aber Schwierigkeiten habe, einen kontinuierlichen nahtlosen Datentransfer zwischen Client und Server zu ermöglichen.

Danke

5voto

Ioan Punkte 2356

Mögliche Optionen:

  1. Lokale Domänen-Sockets: AF_LOCAL-Familie mit den Typen SOCK_STREAM, SOCK_DGRAM, SOCK_SEQPACKET. Der Socket kann "im Speicher" sein, was bedeutet, dass Sie sich mit ihm über einen eindeutigen String verbinden, oder er kann eine Socket-Datei im Dateisystem sein. Es funktioniert genauso wie ein Netzwerksocket, vollduplex.

  2. Zwei Pipes: eine zum Lesen, eine zum Schreiben (umgekehrt für den anderen Prozess). Es könnte etwas komplizierter sein, zwei Pipes im Auge zu behalten, im Gegensatz zum lokalen Domänen-Socket.

Hilfreicher Link Schauen Sie sich den Abschnitt über Pipes und den über Unix-Sockets an.

0voto

Ekhiotz Punkte 33

Hast du daran gedacht, select() zu verwenden, um das Lesen des benannten Pipe zu handhaben?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X