私のJavaアプリケーションは、ソケットサーバーにメッセージ(マルチスレッド)を送信する必要があります。アプリケーションは約100〜200メッセージを1秒間に送信できます。Javaソケットクライアントのパターン
私はこれを行うためのより良いアプローチは何ですか?
- 単一のクライアントソケットを開き、この1つのソケットを通してすべてのスレッドからメッセージを送信します。 短所:接続障害時に再接続ロジックを処理する必要があり、再接続が進行中に多くのメッセージが失われる可能性があります。
- スレッドごとに新しいクライアントソケット接続を作成し、送信後に閉じます。 短所:ソケットを閉じても、ポートはTIME_WAITの期間まで待機します。
どちらがより実用的なアプローチですか?
しかし、OSはちょうどこの権利ですか?固定数のポート(たとえば65000)を持ち、このプールからのポートを再利用します。私はマイクロレベルで同じことを実装する必要がありますか? – Dunxton
OSオープンのニュースソケットを持っているので、既存のものを保有して再利用することが最善です(サーバで新しいハンズフリーを開くという意味です) –