0

ソケット接続を受け入れ、サーバーに接続されているデバイスを監視できるサーバーが必要だとします。

サーバーが実行できることは2つあります。

1. TCP / IP(recvおよびそれらから送信)を介してクライアント接続を受け入れ/監視します。

2.デバイスを監視します(デバイスからの受信と送信)。

1番から、Linuxソケットを使用してクライアント接続を受け入れる予定です。

2番目から、libudev.hライブラリを使用してデバイスを監視する予定です。signal11に関するチュートリアルがあります。

私はすでにLinuxソケットとlibudev.h..をコーディングしていますが、それらは別個のユーザースペースアプリです。それらを1つにマージする必要があります。これをどのように行うのですか。

または、どうすればこれを行うことができますか?ありがとう。

4

1 に答える 1

1

では、I / Oを多重化する必要がありますか?

それがあなたが求めているすべてであるならば、あなたはオプションの選択を持っています。従来のUNIXの方法は、selectまたはpollを使用することです。-http ://www.linux-mag.com/id/331/

または、I/Oを実行する必要のある接続ごとにスレッドを生成することもできます。これは当然最も簡単なオプションですが、2つのスレッド間のデータの整合性を維持するという点でリスクが伴い、ロックと競合状態により、ポーリングよりも確実な実装が難しくなります(私は思います)。

もちろん、それらを別々のプロセスとして保持し、IPCの何らかの方法(共有メモリ、メッセージキューなど)を3番目のプロセスに使用して、2つの機能を統合することもできます。これはおそらくスレッドオプションよりも少し重いですが、2つのプロセス間の分離が優れているため、(潜在的に)より多くの作業を犠牲にして、より回復力があります。

もう少し質問を明確にしていただけますか?!

于 2012-11-01T20:44:28.013 に答える