2012-09-28 23 views
5

Bir sunucuya bağlı bir ruby ​​tcpsocket istemcisi var.tcpsocket'i yeniden bağlayın (veya kapalı soketin nasıl algılanacağını öğrenin)

Verileri göndermeden önce soketin bağlı olup olmadığını nasıl kontrol edebilirim?

Bağlantısı kesilmiş bir tcpsocket'i "kurtarmaya" çalışıyorum, yeniden bağlanıp sonra yeniden gönderirim? eğer öyleyse, kimsenin nereden başlayacağını bilmediğim gibi basit bir kod örneği var :(

Raylara sürekli olarak bağlı bir istemci tcpsocket almayı başardığım için gurur duyuyordum, sonra sunucu istemciyi öldürmeye karar vermişti. , bağlı değilse yeniden dener, ama eğer davayı idare olmaz - Ben bazı sorunların yuvarlak almak için bu kodu kullandım

düzenleme) ve hepsi ayrı düştü Sunucu çalışmıyor (tekrar denenecek). Bu doğru yaklaşımın başlangıcı mı? Teşekkür

Genellikle bu tür senaryolardan yapmak ne
def self.write(data) 
    begin 
    @@my_connection.write(data) 
    rescue Exception => e 
    @@my_connection = TCPSocket.new 'localhost', 8192 
    retry 
    end 
end 

cevap

1

bir değişkene ardışık deneme takip ve yeniden deneme çatı ayarlar başka değişken olması. Çatıya bastığımızda, bir ağ veya sunucu problemi olduğunu gösteren bir tür istisna atın. Tekrar deneme sayısı değişkenini elbette başarılı olarak sıfırlamak isteyeceksiniz.

+0

Ayrıca, soket üzerinde kapalı bir yöntem olmalıdır. Biraz paslıyım ama irb/pry'de kolayca test edilmiş/onaylanmış –

İlgili konular