PDA

View Full Version : PNRP/.Net 3.5


fdfdfdddd
02-11-2009, 15:56
Salve a tutti,

stavo cercando di mettere su un piccolo "peer to peer" utilizzando il framework .Net 3.5.

Ho trovato qualche esempio su internet ed ho tirato giù quattro righe di codice.

Questo è il "server":

PeerName peerName = new PeerName("gennaro", PeerNameType.Unsecured);
PeerNameRegistration pnReg = new PeerNameRegistration();

pnReg.PeerName = peerName;
pnReg.Port = 8889;
//pnReg.Cloud = Cloud.Global;

pnReg.UseAutoEndPointSelection = true;
//pnReg.EndPointCollection.Add(new IPEndPoint(IPAddress.Parse(mioIp), 8889));

pnReg.Comment = "Server attualmente attivo";
pnReg.Data = System.Text.Encoding.UTF8.GetBytes("Dati associati al peer");

try
{
pnReg.Start();
System.Console.WriteLine("Servizio attivo...");
}
catch (Exception exc)
{
System.Console.WriteLine(exc.Message);
}

ConsoleKeyInfo k;

do
{
k = System.Console.ReadKey();
}
while (k.Key != ConsoleKey.Enter);

System.Console.WriteLine("Fermo il servizio");
pnReg.Stop();


e questo per il "client":

try
{
PeerNameResolver resolver = new PeerNameResolver();
PeerName peerName = new PeerName("gennaro", PeerNameType.Unsecured);
PeerNameRecordCollection result = resolver.Resolve(peerName);

foreach (PeerNameRecord record in result)
{
if (record.Comment != null)
{
Console.WriteLine("Commento: " + record.Comment);
}

if (record.Data != null)
{
Console.WriteLine("Dati: " + System.Text.Encoding.UTF8.GetString(record.Data));
}

foreach (IPEndPoint ip in record.EndPointCollection)
{
System.Console.WriteLine("Endpoint: " + ip);
}
}

if (result.Count() <= 0)
System.Console.WriteLine("Impossibile risolvere host");
}
catch (Exception exc)
{
System.Console.WriteLine(exc.Message);
}

Testato sulla mia macchina va tutto bene, ma se il client è eseguito su una macchina e il serve su un'altra, la collection "result" mi torna sempre vuota.

Avete qualche idea?

Grazie 1000 a tutti!