Ho cercato per tutta la rete i lungo ed in largo ma niente
da fare...
Ho la necessità di inviare un pacchetto di dati per
verificare se su un determinato PC è stato avviato
o meno un Server.
Utilizzando un UdpClient invio un pacchetto ed leggo i dati
in risposta alla richiesta, bene, fin qui tutto ok direte...
invece NO.
Nel caso in cui il Pc sia acceso ma il server non è avviato
tutto ok... se invece il PC non è raggiungibile (è spento)
l'applicazione va in blocco resta in attesa di dati in
risposta che mai arriveranno.
codice:
string CheckServer(String serverName, String whatEver)
{
const int numeroPorta = 5121;
string risposta = "0ffline";
try
{
//Create an instance of UdpClient.
UdpClient udpClient = new UdpClient(serverName, numeroPorta);
if (udpClient == null)
{
udpClient = null;
risposta = "offline";
return risposta;
}
Byte[] inputToBeSent = new Byte[256];
inputToBeSent = System.Text.Encoding.ASCII.GetBytes(whatEver.ToCharArray());
IPHostEntry remoteHostEntry = Dns.GetHostByName(serverName);
IPEndPoint remoteIpEndPoint = new IPEndPoint(remoteHostEntry.AddressList[0], numeroPorta);
if (remoteIpEndPoint == null)
{
remoteIpEndPoint = null;
inputToBeSent = null;
udpClient = null;
risposta = "offline";
return risposta;
}
int nBytesSent = udpClient.Send(inputToBeSent, inputToBeSent.Length);
Byte[] received = new Byte[512];
received = udpClient.Receive(ref remoteIpEndPoint);
String dataReceived = System.Text.Encoding.ASCII.GetString(received);
risposta = dataReceived;
udpClient.Close();
}
catch (Exception e)
{
risposta = "offline\n" + e.ToString();
return risposta;
}
return risposta;
}
Scopo : visualizzare lo stato di 4 possibili server in
una pagina web in modo che chi voglia unirsi al gioco
possa sapere da subito se vi sono server attivi o no.
Ringrazio anticipatamente tutti quelli che mi sapranno dare
in qualche modo aiuto.