1

TCPソケットのKEEPALIVEパラメーター(TCP_KEEPIDLE、TCP_KEEPINTVL、およびTCP_KEEPCNT)を設定できるようにしたいのですが、これらはSocketクラスでは使用できないようです。このページの下部にある実装の詳細に関するSocketImplクラスとSocketOptionsクラスのドキュメントに基づいて、ライブラリの実装者がsetsockoptの「level」引数をSOL_SOCKETにハードコーディングしたという結論に至りました。 SOL_TCP/ IPPROTO_TCPなどの他のレベルのオプションにアクセスすることはできません。これらのオプションを処理する、欠落している別のJavaクラスはありますか?そうでない場合は、生のファイル記述子番号を取得して、 FileDescriptorからは利用できないように見えるため、setsockoptを直接呼び出すCコードのビットにJNIを介して渡すことができる方法はありますか?

4

2 に答える 2

1

これらはすべて移植性のないLinux固有のオプションであるため、クロスプラットフォームの言語ライブラリでは利用できない可能性があります。それらのほとんどは、とオプションにそれぞれのエントリがproc(5)ありsysctl(2)ます。

于 2012-08-24T17:01:18.230 に答える
1

探しているマンページはtcp(7)です。SOL_TCPの代わりに、IPPROTO_TCPを使用する方が安全であることに注意してください

于 2013-02-15T15:10:09.973 に答える