2013-05-11 18 views
7

Qual è il modo migliore per simulare una rete in Java?Simula il traffico di rete p2p su un singolo computer

Sono nelle fasi iniziali di un progetto peer to peer in rete e per determinare alcune delle caratteristiche richieste dei client mi piacerebbe essere in grado di simulare più di 100 istanze contemporaneamente sul mio PC.

Idealmente mi piacerebbe creare una versione di "simulazione" delle prese, con i propri ingressi e flussi di uscita. Alla fine, userò questi flussi per il trasferimento dei dati invece di spostare semplicemente i dati tra gli oggetti java, quindi quello che voglio simulare è il tipo di latenza, perdita di dati e altri errori che potresti ottenere in una rete reale.

Idealmente questi metodi di simulazione sarebbero molto vicini agli attuali standard di streaming di java.net.*, quindi non avrei bisogno di fare molte riscritture per passare dalla simulazione al client reale.

Qualcuno può indicarmi la giusta direzione?

+0

Non aggiungere segnali. alle domande, sono rumore. –

risposta

3

È possibile utilizzare Akka per creare milioni di attori su una singola macchina, quindi organizzare le comunicazioni tra di loro in modo simile alla rete "reale".

Ecco un esempio di progetto: https://github.com/adelbertc/scalanet

+0

Cosa è successo? Hai letto la documentazione? Non vedo email sulla mailing list, non aver paura di chiedere aiuto per sbloccare. La maggior parte degli utenti di Akka lo utilizza da Java, quindi sono abbastanza sicuro che non sia bs. Documentazione: http://doc.akka.io/docs/akka/2.1.2/ –

+0

Scusa, sto faticando a dare un senso al tuo commento. Effettivamente ho postato una domanda sulla mailing list qualche tempo fa, ho ottenuto una risposta e più o meno soddisfatto. Ora quando faccio l'IO asincrono sto leggendo i documenti di akka su base regolare, ma poiché gli attori sono in un certo senso un cambio di paradigma, devo leggere i capitoli più di una volta per ottenere una comprensione completa))) Inoltre sto usando Akka con scala . – vitalii

+0

Siamo spiacenti, il commento è finito nella scheda sbagliata. –

0

Ai fini della simulazione si consiglia di controllare Omnet++, I'ts grande per grandi simulazioni scalate con costruito in analisi dei dati strumenti/statistiche. Scrivere è simile al C++, vedere le esercitazioni è piuttosto semplice.

Esempio di rete 6 host (Tratto da Omnet ++ esercitazione)

1

Beh non si ha realmente bisogno di utilizzare alcun attrezzo, ma mettere il cervello per progettare meglio.

Sono necessarie interfacce per il framework di comunicazione sottostante.

Tutto ciò che serve è quello di deridere/sostituire l'attuazione reale con un manichino una volta che avete codificato contro i interfaces.This manichino implementazione può presentare caratteristiche come la latenza, dati fittizi ecc

Si può andare con il contenitore di primavera È possibile scrivere alcuni socket del server fittizio nel contenitore per simulare conversazioni tra più istanze o utilizzare in modo migliore un contenitore Web per allontanare il mal di testa.

+0

Anche se questo è il primo pensiero che mi viene in mente, la domanda afferma che desidera simulare la latenza e la perdita di dati. Ciò non sarà banale se non ci sarà alcuna rete in atto. – flup

+1

E una volta che l'hai progettato abbastanza bene da essere in grado di mettere dietro una rete di simulazione, devi effettivamente prendere in giro la rete - e quindi praticamente implementare uno strumento come lui chiede. – kutschkem

+1

Latenza e dati loos equivale a mettere un thread in stop e ad eliminare alcuni dati dalla struttura dati sottostante. Se simuli/simuli puoi testare la tua implementazione in un modo molto accurato (cioè altamente configurabile) ma se si dipende dalla rete reale per la simulazione non sono sicuro che tu possa fare lo stesso. – Rohitdev

Problemi correlati