2

最近、Appleプッシュ通知サーバーに通知を送信するJavaコードを作成しました。私が実行している問題は、ソケットを作成してネットワークから切断する場合です。私は、オンラインの記事を中心に跳ねてきたし、ほとんどは方法に頼ることをお勧め:Javaソケット - 入力ストリームなしでネットワーク切断を検出する

socket.setKeepAlive(false); 
socket.setSoTimeout(1000); 

具体的に「setSoTimeout」方法。しかし、javadocは、setSoTimeoutはInputStreamからの読み込み時にのみ例外をスローすると述べています。しかし、Apple Push NotificationサーバーはInputStreamにデータを置くことはありませんので、私はそれから何も読むことはできません。誰もソケットInputStreamを使用せずにネットワーク切断を判断する方法の提案はありますか?

+2

http://stackoverflow.com/questions/22720/configure-a-java-socket-to-fail-fast-on-disconnectおよびhttp://stackoverflow.com/questions/2028620/java-sockets-接続を切断して接続します。 –

答えて

0

Socketからの書き込みまたは読み取りを試みると、Socketが切断されたことを確実に検出することができます。書込みは失敗を検出するのにしばらく時間がかかりますので、読書はより良いです。

サーバは、あなたが読むために何かを書く必要はありません。書き込みしないサーバーがある場合は、何も読み取らないか、失敗を検出します。

0

速い精度:拡張通知形式を使用していて、何らかのエラーが発生した場合、APNSはInputStreamでデータを返します。したがって、あなたのInputStreamを無視しないようにする必要があります。

パーソナル学習プロジェクトとしてこれをやっていない限り、すべての通信の詳細を扱うexisting APNS-specific Java librariesをご覧ください。 APNSと確実にやりとりすることは、最初に見たよりもはるかに困難です。特に、あいまいな、または文書化されていないさまざまな詳細が含まれているエラー管理部分に到達すると、

関連する問題