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!
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!