Frage

Das Projekt arbeite ich an nutzt P2P-Daten zwischen den Peers zu übertragen viel anders als Bittorrent. Diese Komponente hat eine zufällige Abtastung auf jeder Schnittstelle zu sehen, welche Geräte im Netzwerk ist. Bisher wurde es als eine Socket-Verbindung implementiert, der überprüft, ob es sich bei der Verbindung, indem Sie versuchen, um das Programm des Zuhörens Port zu anschließen gelungen ist. Ich frage mich, ob es schneller sein, würde dies zu rippen und auf jeder Schnittstelle eine Sendung zu tun. Wäre dies schneller / zuverlässig?

Der aktuelle Code für die Verbindung ist wie folgt:

Socket testSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
testSock.BeginConnect(iep, new AsyncCallback(ConnectedAsync), testSock);
for (int i = 0; i <= iterations && Thread.CurrentThread.IsAlive; i++)
{
     if (testSock.Connected)
         break;
     Thread.Sleep(25); 
}
testSock.Close(0);

Die 'zufällig' Komponente ist ein einfache

Random r = new Random();

für jedes Subnetz der Schnittstelle.

Aus meiner Erfahrung mit Rundfunk (Wireshark, DHCP usw.) Ich bin unter dem Eindruck, dass Rundfunk Lkw-Ladungen werden schneller und Nutzung Haufen weniger Ressourcen. Der Grund, warum ich frage ist, dass die Person, die es geschrieben hat ein kluger Kerl ist und ich frage mich, warum er nicht Rundfunk genutzt hat.

So ist es die Mühe wert?

War es hilfreich?

Lösung

Rundfunk haftet durch bestimmte Geräte herausgefiltert werden. Es wird unzuverlässig Vergangenheit ein Netzwerksegment -. Wenn das, was Sie tun, um ein LAN (oder Netzwerksegment) beschränkt ist, dann in der Tat ausstrahlen, sollten singificantly schneller sein

Dass gesagt wird, wird zufällig Suche nie effizient oder optimal. Sie werden wahrscheinlich verpassen Knoten, haben Probleme mit der Scan dauert länger als erwartet, etc. Da Sie Zugriff auf das Subnetz-Maske haben, sollten Sie in der Lage sein, eine Liste von potentiell gültigen Knoten auf dem Segment, leicht genug, aber wieder zu berechnen - wenn Sie innerhalb eines einzelnen Netzwerksegment beschränkt sind (oder eine Sammlung von ihnen), dann sendet der Weg zu gehen.

Wenn Sie für eine Liste der gültigen WAN Knoten (also nicht nur ein Segment) suchen, dann werden Sie möglicherweise eine Menge von unerwünschten Datenverkehr zu senden. Mein Rat wäre, es einfach sein, jeden Knoten zu haben, der Lage, einen Cache von anderen Knoten miteinander zu senden, benötigen dann eine einzelne Adresse des Knotens als Benutzereingabe in das Netzwerk Bootstrap.

Andere Tipps

Ich vermute, du hast recht, aber der Verdacht sind, wurden sollten Sie Forschung beginnen, nicht, wo sollten Sie aufhören. Da Sie nicht eine riesige Menge an Aufwand sprechen die Theorie zu prüfen, warum Sie es nicht versuchen und sehen?

- MarkusQ

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top