Bir Java soket istemcisiyim. Sunucunun istemcime hala bağlı olduğu ancak iletime bir yanıt göndermediği bir durumda - sonunda bir zaman aşımı istisnası alıyorum.Bir soket nasıl hem bağlanabilir hem de kapatılabilir?
Bu durumda, soketimi yeniden bağlayıp kurmayacağımı veya yeniden kullanmaya devam edip etmeyeceğimi görmek için sınamak istiyorum.
böyle bir durumum kullanın:
if (!socket.isConnected() || socket.isClosed() || !socket.isBound()) {
try {
socket.close();
} catch (IOException e1) {
}
// Wait on a new connection
socket = connectSocket(.....);
}
Ama hep yeniden görünmektedir. Ben Boole özelliklerin değerlerini oturum açtığınızda bu görüyorum:
bağlı: true kapalı: ciltli gerçek: true
nasıl bağlanıp kapatılabilir? TIA
Yöntem çağrıları atomik değildir ... belki de başka bir iş parçacığı 'isConnected()' ve 'isClosed()' çağrıları arasındaki soketi mi kapatıyor? Belki önce soket nesnesinde senkronize etmek? – Powerlord
Sadece isConnected() 've' isClosed() 'için denetimlerin sırasını tersine çevirdiğinizde bunu sınamak kolaydır. –