buechermarkt/BuechermarktServer/Program.cs

73 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace BuechermarktServer
{
class Program
{
public const string ServerIdentifier = "BUECHERMARKTCLIENT00018946";
public const string RelativeDbPath = ".\\db";
static void Main(string[] args)
{
if (!Directory.Exists(RelativeDbPath))
{
Directory.CreateDirectory(RelativeDbPath);
}
var process = new Process();
process.StartInfo.FileName = ".\\mongod.exe";
process.StartInfo.WorkingDirectory = Process.GetCurrentProcess().StartInfo.WorkingDirectory;
process.StartInfo.Arguments = "--dbpath " + RelativeDbPath;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.OutputDataReceived += Process_OutputDataReceived;
process.ErrorDataReceived += Process_OutputDataReceived;
var s = process.Start();
ChildProcessTracker.AddProcess(process);
process.BeginErrorReadLine();
process.BeginOutputReadLine();
while (!process.WaitForExit(100))
{
Broadcast();
}
Thread.Sleep(10000);
}
private static void P_Exited(object sender, EventArgs e)
{
throw new NotImplementedException();
}
private static void Process_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
Console.Write(e.Data);
}
static void Broadcast()
{
UdpClient client = new UdpClient();
IPEndPoint ip = new IPEndPoint(IPAddress.Broadcast, 3000);
byte[] bytes = Encoding.ASCII.GetBytes(ServerIdentifier);
try
{
client.Send(bytes, bytes.Length, ip);
} catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
}