aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ShiftOS_TheReturn/SaveSystem.cs25
-rw-r--r--ShiftOS_TheReturn/ServerManager.cs24
2 files changed, 40 insertions, 9 deletions
diff --git a/ShiftOS_TheReturn/SaveSystem.cs b/ShiftOS_TheReturn/SaveSystem.cs
index 18f8f78..b9bef47 100644
--- a/ShiftOS_TheReturn/SaveSystem.cs
+++ b/ShiftOS_TheReturn/SaveSystem.cs
@@ -163,22 +163,29 @@ namespace ShiftOS.Engine
bool guidReceived = false;
ServerManager.GUIDReceived += (str) =>
{
- //Connection successful! Stop waiting!
- guidReceived = true;
+ //Connection successful! Stop waiting!
+ guidReceived = true;
Console.WriteLine("[inetd] Connection successful.");
};
try
{
-
- ServerManager.Initiate(UserConfig.Get().DigitalSocietyAddress, UserConfig.Get().DigitalSocietyPort);
- //This haults the client until the connection is successful.
- while (ServerManager.thisGuid == new Guid())
+ if (ServerManager.ServerOnline)
{
- Thread.Sleep(10);
+ ServerManager.Initiate(UserConfig.Get().DigitalSocietyAddress, UserConfig.Get().DigitalSocietyPort);
+ //This haults the client until the connection is successful.
+ while (ServerManager.thisGuid == new Guid())
+ {
+ Thread.Sleep(10);
+ }
+ Console.WriteLine("[inetd] DHCP GUID recieved, finished setup");
+ FinishBootstrap();
+ }
+ else
+ {
+ Console.WriteLine("[inetd] No suitable network interface card found, skipping network connection.");
+ FinishBootstrap();
}
- Console.WriteLine("[inetd] DHCP GUID recieved, finished setup");
- FinishBootstrap();
}
catch (Exception ex)
{
diff --git a/ShiftOS_TheReturn/ServerManager.cs b/ShiftOS_TheReturn/ServerManager.cs
index be4f086..00f9653 100644
--- a/ShiftOS_TheReturn/ServerManager.cs
+++ b/ShiftOS_TheReturn/ServerManager.cs
@@ -38,6 +38,7 @@ using System.Net.Sockets;
using System.Diagnostics;
using System.IO;
using System.Reflection;
+using System.Net.NetworkInformation;
namespace ShiftOS.Engine
{
@@ -46,6 +47,29 @@ namespace ShiftOS.Engine
/// </summary>
public static class ServerManager
{
+
+ public static bool ServerOnline
+ {
+ get
+ {
+ try
+ {
+ Ping myPing = new Ping();
+ String host = UserConfig.Get().DigitalSocietyAddress;
+ byte[] buffer = new byte[32];
+ int timeout = 1000;
+ PingOptions pingOptions = new PingOptions();
+ PingReply reply = myPing.Send(host, timeout, buffer, pingOptions);
+ return (reply.Status == IPStatus.Success);
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+ }
+ }
+
+
/// <summary>
/// Print connection diagnostic information.
/// </summary>