Socket
numaralı telefondan elde ettiğim bir DataInputStream
var. dis.read(...)
için zaman aşımı ayarlayabileceğim herhangi bir yol var mı? Şu anda okumak için yeni bir konu ürettim. Üst iş parçacığı, kesintiye uğramadan önce beklemek için thread.join(timeout)
yapar. Nio'nun farkındayım, ama bu noktada o kadar çok şey tekrar düşünmek istemiyorum. Teşekkürler.Bir InputStream'in read() işlevi için zaman aşımı ayarlayabilir miyim?
7
A
cevap
14
Genellikle InputStream üzerinde değil, ancak soketin kendisindeki tüm okuma işlemleri için bir zaman aşımı ayarlamak üzere Socket#setSoTimeout(int)
'u kullanabilirsiniz.
İlgili konular
- 1. C# içinde UdpClient için zaman aşımı ayarlayabilir miyim?
- 2. Kod bloğu için bir zaman sınırı ayarlayabilir miyim?
- 3. 'Read' işlevi nasıl yapılır?
- 4. Zaman aşımı tamamlandıktan sonra bir işlevi nasıl çağırırsınız? Zaman aşımı bir tıklama olayı tarafından tetiklenir (Typescript)
- 5. ajax zaman aşımı geri arama işlevi
- 6. WaitGroup.Wait() için zaman aşımı
- 7. BackgroundWorker için zaman aşımı
- 8. Zaman aşımı için tekrar dene?
- 9. Böyle bir işlevi vardır bir shell script yazdım zaman aşımı
- 10. Şef düğümleri için fqdn ayarlayabilir miyim?
- 11. Django datetime alanı için belirli bir varsayılan süre ayarlayabilir miyim?
- 12. Kod değişikliklerini göstermek için Eclipse'i ayarlayabilir miyim?
- 13. Chrome'da "görüntüleme kaynağı" için tema ayarlayabilir miyim?
- 14. üyelik zaman aşımı ve oturum zaman aşımı
- 15. Internet Explorer için farklı bir veri dizini ayarlayabilir miyim?
- 16. Geçici özellikler getirmeyi ayarlayabilir miyim?
- 17. Zaman aşımı ve açık zaman aşımı arasındaki fark nedir?
- 18. readLine() için bir zaman aşımı sınırı belirleme?
- 19. Noktaların sırasını düzgün bir Poligonda ayarlayabilir miyim?
- 20. Python psycopg2 zaman aşımı
- 21. WebSocket Bağlantı zaman aşımı
- 22. "pull - rebase" için git'de bir takma ad ayarlayabilir miyim?
- 23. FFmpeg ile bir video akışı için rotasyon alanı ayarlayabilir miyim?
- 24. Perl'deki tüm sinyaller için tek bir sinyal işleyici ayarlayabilir miyim?
- 25. Farklı yanıtlar için urllib2.urlopen() read() read
- 26. Bir işlevi süslemeli miyim?
- 27. Bir ASIHTTP isteği zaman aşımı
- 28. request.GetResponse her zaman için bir zaman aşımı süresi
- 29. Android: layout_toLeftOf'u programlı olarak ayarlayabilir miyim?
- 30. fcntl.flock - zaman aşımı nasıl uygulanır?
Ah teşekkürler, onu özledim. Benim tek takip soru şudur: Bu kez, her defasında(), birden çok kez okunabilen() çağrılır. Tüm zaman aşımı süresini ayarlayabileceğim bir yol var mıdır, öyle ki her bir okuma() toplamı zaman aşımını aşarsa zaman aşımı olur mu? – Zombies
Otomatik olarak değil, ancak gerçek zaman aşımınızdan daha kısa bir S0-zaman aşımı ayarlayabilirsiniz ve izin verilen toplam çalışma sürenizi aştıysanız bir döngüde kontrol edebilirsiniz. – jarnbjo
Soket zaman aşımı ve DataInputStream birlikte (ve ayrıca bir BufferredInputStream) kullanmaya dikkat edin. Bunlar geçici belleğe bazı verileri ayıracak veya okuyacaktır (getLong() içinde olduğu gibi) ve zaman aşımı gerçekleşirse (soketten daha fazla veri beklerken), önceden okunan verilerden herhangi birini kaybedersiniz ve * kurtarmanın bir yolu yoktur * . SocketTimeoutException, zaman aşımından önce başarıyla aktarılan bayt sayısını sağlayan InterruptedIOException öğesini genişletir. Bir ham soket ile bunu tekrar denemek/devam ettirmek için kullanabilirsiniz (belki de kötü mesajı yıkamak için). –