ソケットのNagleアルゴリズムが有効になっている場合、指定された接続で複数の小さなメッセージを送信すると、通常、同じ接続でより小さいメッセージを送信する速度が遅くなります。 Nagleは送信データを内部的にバッファリングし、効率的なメッセージを送信できるように、十分なデータがバッファリングされるか、タイムアウトするのを待たなければなりません。一般的なソケットの使用では、Nagleを有効にしておくと、通常、速度、パフォーマンス、およびオーバーヘッドのバランスがよく、ほとんどのアプリケーションで受け入れが可能です。しかし、時間の影響を受けやすいメッセージを送信する必要がある場合は、Nagleを無効にして、すべてのメッセージをできるだけ早く個別に送信する必要があります。
複数のデバイスに1つのメッセージを送信する方法については、TCPでは不可能です。おそらく、各デバイスはそれぞれ独自のTCP接続をサーバーと直接接続しています。 1つのメッセージをすべての300の接続に送信するには、各接続に1つずつ、メッセージの独立したコピーを300個作成する必要があります。 TCPには放送機能がありません(必要に応じてUDPまたはマルチキャスティングに切り替える)。 1台のサーバーメッセージを送信して300台のデバイスに応答する唯一の方法は、デバイスがサーバーに直接接続していないが、サーバーへの単一の接続を維持しているプロキシを介して通信し、必要に応じて
「1つの大きなメッセージ」と言えば、TCPを使用すると、それぞれのデバイスに1つの大きなメッセージを送信する必要があります。 TCPを使用しているときにはメッセージをブロードキャストできません(ただし、UDPで行うことはできます)。 –