私は、Linux上でC言語で特別な目的のTCPサーバーを実装する予定です。ちょっとした調査をした後、シングルスレッド、1接続あたり1スレッドなど、いくつかの方法があるようです。ソケットには、データグラムとストリーム、そしてブロックと非ブロックの2つのオプションがあります。すべてが< 1kBのであり、ほとんどの物事が< 512Bある適度に単純なTCPサーバーのための良いアーキテクチャ
Client: request id [request info]
Server: status id [response info]
または
Client: request id [request info]
Server: status id [response info]
Client: additional request id [request info]
Server: status id [response info]
:コミュニケーションの
ほとんどが見えるようになるだろう。しかし、短期間に多くの個別の要求があるかもしれません。
サーバーを最も効果的に動作させるようにサーバーをセットアップするにはどうすればよいですか(リソースを消費しない、クライアントの要求を拒否しないなど)
応答の生成に時間がかかりますか? – cnicutar
TCPは、ストリームを使用していることを意味します。データグラムはUDPです。 – duskwuff
帯域幅、接続数について考えていますか?サーバーがあまり負荷がかかっていない場合は、既存のプロトコル(おそらくHTTP、XMLRPC、またはSNMPなど)を使用することを検討してください。テキストメッセージ(Json、....)を使用することをお勧めします。なぜなら、それらは簡単にデバッグできるからです。 (単純なプロトコルの例についてはSCGIを見てください)。 –