2013-05-11 20 views
7

Java'da bir ağı benzetiminin en iyi yolu nedir?Tek bir bilgisayarda p2p ağ trafiğini simüle edin

Ağa bağlı bir eş proje projesinin ilk aşamalarındayım ve istemcilerin gerekli özelliklerinin bazılarını belirlemek için PC'imde eşzamanlı olarak 100'den fazla örneği simüle edebilmeyi istiyorum.

İdeal olarak, kendi girişleri ve çıkış akışları ile soketlerin "simülasyon" versiyonunu oluşturmak istiyorum. Sonunda, java nesneleri arasında veri taşımak yerine veri aktarımı için bu akışları kullanacağım, böylece simüle etmek istediğim şey gerçek bir ağda karşılaşabileceğiniz bir çeşit gecikme, veri kaybı ve diğer hatalardır.

İdeal olarak, bu simülasyon yöntemleri, java.net.* gerçek akış standartlarına çok yakın olacaktır, bu yüzden simülasyondan gerçek istemciye geçmek için yeniden yazma işleminin çoğuna gerek kalmaz.

Beni doğru yöne yönlendiren var mı?

+0

Sigs eklemeyin. sorulara, onlar gürültü. –

cevap

3

Tek bir makinede milyonlarca Aktör oluşturmak için Akka'u kullanabilir ve ardından 'gerçek' ağa benzer şekilde aralarındaki iletişimi düzenleyebilirsiniz.

İşte bir örnek proje: Eğer veri analizi/istatistik yerleşik araçlarıyla birlikte büyük ölçekli simülasyonlar için I'ts büyük, Omnet++ kontrol etmek isteyebilirsiniz simülasyon amacıyla https://github.com/adelbertc/scalanet

+0

Ne oldu? Belgeleri okudun mu? Posta listesinde hiç e-posta göremiyorum, yardım istememekten korkma. Akka kullanıcılarının çoğunluğu onu Java'dan kullanıyor, bu yüzden bs değil eminim. Dokümantasyon: http://doc.akka.io/docs/akka/2.1.2/ –

+0

Üzgünüz, yorumunuzu anlamlandırmaya çalışıyorum. Gerçekten de bir süre önce e-posta listesine bir soru gönderdim, bir cevap aldım ve az ya da çok memnunum. Şimdi async IO'yu yaparken düzenli olarak akka dökümanlarını okuyorum ama aktörler bir anlamda paradigma kayması nedeniyle tam bir anlayış elde etmek için birden fazla bölüm okumalıyım))) Ayrıca Akka'yı scala ile kullanıyorum . – vitalii

+0

Üzgünüz, yorum yanlış sekmede sona erdi. –

0

. Yazma, C++ 'ya benzer, öğreticilere bakın, oldukça basittir. (OMNeT ++ öğretici Alındığı)

Örnek 6 ana şebeke

1

Iyi gerçekten herhangi araçları kullanmak ama daha iyi tasarlamak için beynini koymak gerekmez.

Altta yatan iletişim çerçevesi için arabirimlere ihtiyacınız var.

Tek ihtiyacınız/alay sen Sen bahar konteyner ile gidebilirsiniz kukla uygulama gecikme gibi özellikleri, kukla verileri vb

tanıtabilirsiniz interfaces.This karşı kodlu kez bir kukla biriyle gerçek uygulanmasını ikame etmektir Birden fazla örnek arasındaki konuşmaları simüle etmek veya bu baş ağrısını sizden uzak tutmak için bir web kabını daha iyi kullanmak için kapsayıcıya bazı kukla sunucu soketleri yazabilirsiniz.

+0

Bu benim aklıma gelen ilk düşünce olsa da, soru gecikme ve veri kaybını simüle etmek istediğini belirtiyor. Aralarında gerçek bir ağ yoksa, bu daha da belirgin olmaz. – flup

+1

Ve bir kez onun arkasında alaycı bir ağ koyabilmek için yeterince iyi bir şekilde tasarladıktan sonra, aslında ağla dalga geçmeniz gerekiyor - ve bu yüzden hemen hemen istediği gibi bir araç uygulamanız gerekiyor. – kutschkem

+1

Gecikme ve veri kayıpları, bir iş parçacığının uyumasına ve temel veri yapısından bazı verileri silmeye eşdeğerdir. Eğer simüle/taklit ederseniz, uygulamanızı çok ince ayarlanmış bir şekilde test edebilirsiniz (yani, çok yapılandırılabilir) ancak eğer gerçek bir ağa benziyorsanız, siz de aynısını yapabileceğinizden emin değilim. – Rohitdev

İlgili konular