From 7f7185367210f88142a75adc86d3ceedb1b30858 Mon Sep 17 00:00:00 2001 From: Alexander Eckart Date: Sat, 4 May 2013 19:01:09 +0200 Subject: [PATCH] added Server/CVocaluxeServer.cs --- .gitignore | 5 ++ ClientServerLib/ClientServerLib/CClient.cs | 48 ++++++++++++-- ClientServerLib/ClientServerLib/Structs.cs | 3 + .../ClientTest/ClientTest.Designer.cs | 37 +++++++++++ ClientServerLib/ClientTest/ClientTest.cs | 60 ++++++++++++++++-- Output/ClientServerLib.dll | Bin 0 -> 36864 bytes Vocaluxe/Base/CConfig.cs | 4 ++ Vocaluxe/Base/Server/CVocaluxeServer.cs | 36 +++++++++++ Vocaluxe/Program.cs | 12 +++- Vocaluxe/Vocaluxe.csproj | 4 ++ 10 files changed, 199 insertions(+), 10 deletions(-) create mode 100644 Output/ClientServerLib.dll create mode 100644 Vocaluxe/Base/Server/CVocaluxeServer.cs diff --git a/.gitignore b/.gitignore index 3fb7c02c..0e90224b 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,8 @@ Output/Songs /ClientServerLib/ClientServerLib/ClientServerLib.csproj.user /ClientServerLib/ClientServerLib/bin/Debug/ClientServerLib.dll /ClientServerLib/ClientTest/bin/Debug/ClientServerLib.dll +/ClientServerLib/ClientServerLib/bin/ClientServerLib.dll +/ClientServerLib/ClientTest/bin/Debug/ClientTest.exe +/ClientServerLib/ClientTest/bin/Debug/ClientTest.vshost.exe +/ClientServerLib/ClientTest/bin/Release/ClientTest.vshost.exe +/ClientServerLib/ClientTest/bin/Release/ClientTest.vshost.exe.manifest diff --git a/ClientServerLib/ClientServerLib/CClient.cs b/ClientServerLib/ClientServerLib/CClient.cs index 162b2955..41347cf3 100644 --- a/ClientServerLib/ClientServerLib/CClient.cs +++ b/ClientServerLib/ClientServerLib/CClient.cs @@ -25,6 +25,8 @@ namespace ClientServerLib private List requests; private List responses; private OnConnectionChanged onConnectionChanged; + private OnSend onSend; + private OnReceived onReceived; public bool Connected { @@ -51,12 +53,17 @@ namespace ClientServerLib clientThread.Start(); } - public void Connect(string IP = "127.0.0.1", int Port = 3000, OnConnectionChanged OnConnectionChanged = null) + public void Connect(string IP = "127.0.0.1", int Port = 3000, + OnConnectionChanged OnConnectionChanged = null, + OnSend OnSend = null, + OnReceived OnReceived = null) { if (!doConnect) { - if (OnConnectionChanged != null) - onConnectionChanged = OnConnectionChanged; + onConnectionChanged = OnConnectionChanged; + onSend = OnSend; + onReceived = OnReceived; + ip = IP; port = Port; doConnect = true; @@ -114,7 +121,7 @@ namespace ClientServerLib connected = true; RaiseOnConnectionChanged(); } - catch + catch (Exception e) { connected = false; RaiseOnConnectionChanged(); @@ -134,6 +141,7 @@ namespace ClientServerLib try { connection.TcpClient.Close(); + connection = new CConnection(new TcpClient(), -1); } catch { @@ -184,7 +192,10 @@ namespace ClientServerLib byte[] serverParam = new byte[bytesRead]; Array.Copy(data, serverParam, bytesRead); + RaiseOnReceived(serverParam); + byte[] clientResponse = connection.CreateClientKey(serverParam); + RaiseOnSend(clientResponse); clientStream.Write(clientResponse, 0, clientResponse.Length); clientStream.Flush(); } @@ -206,7 +217,8 @@ namespace ClientServerLib { try { - responses[0].Callback(responses[0].Response); + if (responses[0].Callback != null) + responses[0].Callback(responses[0].Response); } finally { @@ -227,6 +239,7 @@ namespace ClientServerLib NetworkStream clientStream = connection.TcpClient.GetStream(); + RaiseOnSend(request.Command); byte[] encrypted = connection.Encrypt(request.Command); clientStream.Write(encrypted, 0, encrypted.Length); @@ -257,6 +270,7 @@ namespace ClientServerLib encrypted = new byte[bytesRead]; Array.Copy(data, encrypted, bytesRead); response.Response = connection.Decrypt(encrypted); + RaiseOnReceived(response.Response); return response; } @@ -272,5 +286,29 @@ namespace ClientServerLib } catch {} } + + private void RaiseOnSend(byte[] Message) + { + if (onSend == null) + return; + + try + { + onSend(Message); + } + catch { } + } + + private void RaiseOnReceived(byte[] Message) + { + if (onReceived == null) + return; + + try + { + onReceived(Message); + } + catch { } + } } } diff --git a/ClientServerLib/ClientServerLib/Structs.cs b/ClientServerLib/ClientServerLib/Structs.cs index d3f3c41f..9e1309ed 100644 --- a/ClientServerLib/ClientServerLib/Structs.cs +++ b/ClientServerLib/ClientServerLib/Structs.cs @@ -7,7 +7,10 @@ namespace ClientServerLib { public delegate void ResponseCallback(byte[] Response); public delegate byte[] HandleRequest(int ConnectionID, byte[] Message); + public delegate void OnConnectionChanged(bool Connected); + public delegate void OnSend(byte[] Message); + public delegate void OnReceived(byte[] Message); public struct SRequest { diff --git a/ClientServerLib/ClientTest/ClientTest.Designer.cs b/ClientServerLib/ClientTest/ClientTest.Designer.cs index a0dc68e9..c04db48e 100644 --- a/ClientServerLib/ClientTest/ClientTest.Designer.cs +++ b/ClientServerLib/ClientTest/ClientTest.Designer.cs @@ -41,6 +41,9 @@ this.lbDateSending = new System.Windows.Forms.Label(); this.lbDataReceiving = new System.Windows.Forms.Label(); this.tbDataReceiving = new System.Windows.Forms.TextBox(); + this.tbPassword = new System.Windows.Forms.TextBox(); + this.lbPassword = new System.Windows.Forms.Label(); + this.btLogin = new System.Windows.Forms.Button(); this.statusStrip1.SuspendLayout(); this.panel1.SuspendLayout(); this.SuspendLayout(); @@ -114,6 +117,9 @@ // // panel1 // + this.panel1.Controls.Add(this.btLogin); + this.panel1.Controls.Add(this.lbPassword); + this.panel1.Controls.Add(this.tbPassword); this.panel1.Controls.Add(this.lbServerIP); this.panel1.Controls.Add(this.btConnect); this.panel1.Controls.Add(this.tbServerIP); @@ -162,6 +168,34 @@ this.tbDataReceiving.Size = new System.Drawing.Size(804, 120); this.tbDataReceiving.TabIndex = 9; // + // tbPassword + // + this.tbPassword.Location = new System.Drawing.Point(85, 113); + this.tbPassword.Name = "tbPassword"; + this.tbPassword.Size = new System.Drawing.Size(86, 20); + this.tbPassword.TabIndex = 6; + this.tbPassword.Text = "vocaluxe"; + // + // lbPassword + // + this.lbPassword.AutoSize = true; + this.lbPassword.Location = new System.Drawing.Point(3, 116); + this.lbPassword.Name = "lbPassword"; + this.lbPassword.Size = new System.Drawing.Size(56, 13); + this.lbPassword.TabIndex = 7; + this.lbPassword.Text = "Password:"; + // + // btLogin + // + this.btLogin.Enabled = false; + this.btLogin.Location = new System.Drawing.Point(6, 139); + this.btLogin.Name = "btLogin"; + this.btLogin.Size = new System.Drawing.Size(165, 23); + this.btLogin.TabIndex = 8; + this.btLogin.Text = "Login"; + this.btLogin.UseVisualStyleBackColor = true; + this.btLogin.Click += new System.EventHandler(this.btLogin_Click); + // // ClientTest // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -199,6 +233,9 @@ private System.Windows.Forms.Label lbDateSending; private System.Windows.Forms.Label lbDataReceiving; private System.Windows.Forms.TextBox tbDataReceiving; + private System.Windows.Forms.Button btLogin; + private System.Windows.Forms.Label lbPassword; + private System.Windows.Forms.TextBox tbPassword; } } diff --git a/ClientServerLib/ClientTest/ClientTest.cs b/ClientServerLib/ClientTest/ClientTest.cs index 4fc0f9ba..3ed470ee 100644 --- a/ClientServerLib/ClientTest/ClientTest.cs +++ b/ClientServerLib/ClientTest/ClientTest.cs @@ -37,6 +37,11 @@ namespace ClientTest Disconnect(); } + private void btLogin_Click(object sender, EventArgs e) + { + + } + private void Connect() { int port = 3000; @@ -54,7 +59,7 @@ namespace ClientTest } lbConnectionStatusText.Text = "Connecting..."; - client.Connect(tbServerIP.Text, port, OnConnectionChanged); + client.Connect(tbServerIP.Text, port, OnConnectionChanged, OnSend, OnReceived); } private void Disconnect() @@ -65,12 +70,59 @@ namespace ClientTest private void OnConnectionChanged(bool Connected) { if (Connected) - lbConnectionStatusText.Text = "Connected"; + { + this.Invoke((MethodInvoker)delegate + { + lbConnectionStatusText.Text = "Connected"; + btConnect.Text = "Disconnect"; + btLogin.Enabled = true; + }); + } else { - client.Disconnect(); - lbConnectionStatusText.Text = "Disconnected"; + this.Invoke((MethodInvoker)delegate + { + client.Disconnect(); + lbConnectionStatusText.Text = "Disconnected"; + btConnect.Text = "Connect"; + btLogin.Text = "Login"; + btLogin.Enabled = false; + }); } } + + private void OnSend(byte[] Message) + { + if (Message == null) + return; + + string text = String.Empty; + foreach (byte b in Message) + { + text += b.ToString() + " "; + } + + this.Invoke((MethodInvoker)delegate + { + tbDataSending.Text = text; + }); + } + + private void OnReceived(byte[] Message) + { + if (Message == null) + return; + + string text = String.Empty; + foreach (byte b in Message) + { + text += b.ToString() + " "; + } + + this.Invoke((MethodInvoker)delegate + { + tbDataReceiving.Text = text; + }); + } } } diff --git a/Output/ClientServerLib.dll b/Output/ClientServerLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..b762cd237b2e059b224f9817881eb2d6a14ba335 GIT binary patch literal 36864 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 l?y~!pXf}?n$MFB(_vF&_W` literal 0 HcmV?d00001 diff --git a/Vocaluxe/Base/CConfig.cs b/Vocaluxe/Base/CConfig.cs index baf4b93c..73c65f55 100644 --- a/Vocaluxe/Base/CConfig.cs +++ b/Vocaluxe/Base/CConfig.cs @@ -112,6 +112,10 @@ namespace Vocaluxe.Base public static EWebcamLib WebcamLib = EWebcamLib.OpenCV; public static SWebcamConfig WebcamConfig; + // Server + public static EOffOn Server = EOffOn.TR_CONFIG_ON; + public static int ServerPort = 3000; + //Lists to save parameters and values private static readonly List _Params = new List(); private static readonly List _Values = new List(); diff --git a/Vocaluxe/Base/Server/CVocaluxeServer.cs b/Vocaluxe/Base/Server/CVocaluxeServer.cs new file mode 100644 index 00000000..b4fd8e2a --- /dev/null +++ b/Vocaluxe/Base/Server/CVocaluxeServer.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using ClientServerLib; +using VocaluxeLib.Menu; + +namespace Vocaluxe.Base.Server +{ + static class CVocaluxeServer + { + private static CServer _Server; + + public static void Init() + { + _Server = new CServer(RequestHandler, CConfig.ServerPort); + } + + public static void Start() + { + if (CConfig.Server == EOffOn.TR_CONFIG_ON) + _Server.Start(); + } + + public static void Close() + { + _Server.Stop(); + } + + private static byte[] RequestHandler(int ConnectionID, byte[] Message) + { + return null; + } + } +} diff --git a/Vocaluxe/Program.cs b/Vocaluxe/Program.cs index 5f204724..ea384764 100644 --- a/Vocaluxe/Program.cs +++ b/Vocaluxe/Program.cs @@ -26,6 +26,7 @@ using System.Windows.Forms; using Vocaluxe.Base; using System.Runtime.ExceptionServices; using Vocaluxe.Base.Font; +using Vocaluxe.Base.Server; namespace Vocaluxe { @@ -183,6 +184,13 @@ namespace Vocaluxe Application.DoEvents(); + // Init Server + CLog.StartBenchmark(0, "Init Server"); + CVocaluxeServer.Init(); + CLog.StopBenchmark(0, "Init Server"); + + Application.DoEvents(); + // Init Input CLog.StartBenchmark(0, "Init Input"); CController.Init(); @@ -210,6 +218,7 @@ namespace Vocaluxe // Start Main Loop _SplashScreen.Close(); + CVocaluxeServer.Start(); CDraw.MainLoop(); } @@ -219,7 +228,7 @@ namespace Vocaluxe // Unloading try { - CLog.CloseAll(); + CVocaluxeServer.Close(); CController.Close(); CSound.RecordCloseAll(); CSound.CloseAllStreams(); @@ -227,6 +236,7 @@ namespace Vocaluxe CDraw.Unload(); CDataBase.CloseConnections(); CWebcam.Close(); + CLog.CloseAll(); } catch (Exception) {} Environment.Exit(Environment.ExitCode); diff --git a/Vocaluxe/Vocaluxe.csproj b/Vocaluxe/Vocaluxe.csproj index 46d4c11c..0c75048d 100644 --- a/Vocaluxe/Vocaluxe.csproj +++ b/Vocaluxe/Vocaluxe.csproj @@ -152,6 +152,9 @@ ..\Output\AForge.Video.DirectShow.dll False + + ..\ClientServerLib\ClientServerLib\bin\ClientServerLib.dll + ..\Output\Community.CsharpSqlite.dll @@ -197,6 +200,7 @@ + Form