diff --git a/ChatClient/App.config b/ChatClient/App.config new file mode 100644 index 00000000..ffaf5407 --- /dev/null +++ b/ChatClient/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ChatClient/ChatClient.vbproj b/ChatClient/ChatClient.vbproj new file mode 100644 index 00000000..aea6dc22 --- /dev/null +++ b/ChatClient/ChatClient.vbproj @@ -0,0 +1,123 @@ + + + + + Debug + AnyCPU + {9713484C-6EE3-4D7E-B6E6-F32CF6B6BB6C} + WinExe + ChatClient.My.MyApplication + ChatClient + ChatClient + 512 + WindowsForms + v4.7.2 + true + true + + + AnyCPU + true + full + true + true + bin\Debug\ + ChatClient.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + AnyCPU + pdbonly + false + true + true + bin\Release\ + ChatClient.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + On + + + Binary + + + Off + + + On + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Form + + + Form1.vb + Form + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + Form1.vb + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + \ No newline at end of file diff --git a/ChatClient/Form1.Designer.vb b/ChatClient/Form1.Designer.vb new file mode 100644 index 00000000..71639aba --- /dev/null +++ b/ChatClient/Form1.Designer.vb @@ -0,0 +1,107 @@ + _ +Partial Class Form1 + Inherits System.Windows.Forms.Form + + 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Wird vom Windows Form-Designer benötigt. + Private components As System.ComponentModel.IContainer + + 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. + 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. + 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. + _ + Private Sub InitializeComponent() + Me.Label1 = New System.Windows.Forms.Label() + Me.TextBox1 = New System.Windows.Forms.TextBox() + Me.Button1 = New System.Windows.Forms.Button() + Me.TextBox2 = New System.Windows.Forms.TextBox() + Me.TextBox3 = New System.Windows.Forms.TextBox() + Me.Button2 = New System.Windows.Forms.Button() + Me.SuspendLayout() + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Location = New System.Drawing.Point(27, 25) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(83, 13) + Me.Label1.TabIndex = 0 + Me.Label1.Text = "Your Chat name" + ' + 'TextBox1 + ' + Me.TextBox1.Location = New System.Drawing.Point(116, 22) + Me.TextBox1.Name = "TextBox1" + Me.TextBox1.Size = New System.Drawing.Size(100, 20) + Me.TextBox1.TabIndex = 1 + ' + 'Button1 + ' + Me.Button1.Location = New System.Drawing.Point(116, 48) + Me.Button1.Name = "Button1" + Me.Button1.Size = New System.Drawing.Size(128, 23) + Me.Button1.TabIndex = 2 + Me.Button1.Text = "Connect to Server" + Me.Button1.UseVisualStyleBackColor = True + ' + 'TextBox2 + ' + Me.TextBox2.Location = New System.Drawing.Point(30, 87) + Me.TextBox2.Multiline = True + Me.TextBox2.Name = "TextBox2" + Me.TextBox2.ScrollBars = System.Windows.Forms.ScrollBars.Both + Me.TextBox2.Size = New System.Drawing.Size(519, 204) + Me.TextBox2.TabIndex = 3 + ' + 'TextBox3 + ' + Me.TextBox3.Location = New System.Drawing.Point(30, 297) + Me.TextBox3.Name = "TextBox3" + Me.TextBox3.Size = New System.Drawing.Size(519, 20) + Me.TextBox3.TabIndex = 4 + ' + 'Button2 + ' + Me.Button2.Location = New System.Drawing.Point(421, 323) + Me.Button2.Name = "Button2" + Me.Button2.Size = New System.Drawing.Size(128, 23) + Me.Button2.TabIndex = 5 + Me.Button2.Text = "Send message" + Me.Button2.UseVisualStyleBackColor = True + ' + 'Form1 + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(800, 450) + Me.Controls.Add(Me.Button2) + Me.Controls.Add(Me.TextBox3) + Me.Controls.Add(Me.TextBox2) + Me.Controls.Add(Me.Button1) + Me.Controls.Add(Me.TextBox1) + Me.Controls.Add(Me.Label1) + Me.Name = "Form1" + Me.Text = "Form1" + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents Label1 As Label + Friend WithEvents TextBox1 As TextBox + Friend WithEvents Button1 As Button + Friend WithEvents TextBox2 As TextBox + Friend WithEvents TextBox3 As TextBox + Friend WithEvents Button2 As Button +End Class diff --git a/ChatClient/Form1.resx b/ChatClient/Form1.resx new file mode 100644 index 00000000..1af7de15 --- /dev/null +++ b/ChatClient/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ChatClient/Form1.vb b/ChatClient/Form1.vb new file mode 100644 index 00000000..528b8534 --- /dev/null +++ b/ChatClient/Form1.vb @@ -0,0 +1,59 @@ +Imports System.Net.Sockets +Imports System.Text +Public Class Form1 + Dim clientSocket As New System.Net.Sockets.TcpClient() + Dim serverStream As NetworkStream + Dim readData As String + Dim infiniteCounter As Integer + + Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click + readData = "Connected to Chat Server ..." + msg() + clientSocket.Connect("127.0.0.1", 8888) + 'Label1.Text = "Client Socket Program - Server Connected ..." + serverStream = clientSocket.GetStream() + + Dim outStream As Byte() = + System.Text.Encoding.ASCII.GetBytes(TextBox1.Text + "$") + serverStream.Write(outStream, 0, outStream.Length) + serverStream.Flush() + + Dim ctThread As Threading.Thread = + New Threading.Thread(AddressOf getMessage) + ctThread.Start() + End Sub + Private Sub getMessage() + For infiniteCounter = 1 To 2 + infiniteCounter = 1 + serverStream = clientSocket.GetStream() + Dim buffSize As Integer + Dim inStream(10024) As Byte + buffSize = clientSocket.ReceiveBufferSize + Try + serverStream.Read(inStream, 0, buffSize) + + Catch ex As Exception + + End Try + Dim returndata As String = + System.Text.Encoding.ASCII.GetString(inStream) + readData = "" + returndata + msg() + Next + End Sub + + Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click + Dim outStream As Byte() = + System.Text.Encoding.ASCII.GetBytes(TextBox2.Text + "$") + serverStream.Write(outStream, 0, outStream.Length) + serverStream.Flush() + End Sub + Private Sub msg() + If Me.InvokeRequired Then + Me.Invoke(New MethodInvoker(AddressOf msg)) + Else + TextBox2.Text = TextBox2.Text + + Environment.NewLine + " >> " + readData + End If + End Sub +End Class diff --git a/ChatClient/My Project/Application.Designer.vb b/ChatClient/My Project/Application.Designer.vb new file mode 100644 index 00000000..32f36417 --- /dev/null +++ b/ChatClient/My Project/Application.Designer.vb @@ -0,0 +1,38 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + 'NOTE: This file is auto-generated; do not modify it directly. To make changes, + ' or if you encounter build errors in this file, go to the Project Designer + ' (go to Project Properties or double-click the My Project node in + ' Solution Explorer), and make changes on the Application tab. + ' + Partial Friend Class MyApplication + + _ + Public Sub New() + MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) + Me.IsSingleInstance = false + Me.EnableVisualStyles = true + Me.SaveMySettingsOnExit = true + Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses + End Sub + + _ + Protected Overrides Sub OnCreateMainForm() + Me.MainForm = Global.ChatClient.Form1 + End Sub + End Class +End Namespace diff --git a/ChatClient/My Project/Application.myapp b/ChatClient/My Project/Application.myapp new file mode 100644 index 00000000..1243847f --- /dev/null +++ b/ChatClient/My Project/Application.myapp @@ -0,0 +1,11 @@ + + + true + Form1 + false + 0 + true + 0 + 0 + true + diff --git a/ChatClient/My Project/AssemblyInfo.vb b/ChatClient/My Project/AssemblyInfo.vb new file mode 100644 index 00000000..8924c182 --- /dev/null +++ b/ChatClient/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' Allgemeine Informationen über eine Assembly werden über die folgenden +' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +' die einer Assembly zugeordnet sind. + +' Werte der Assemblyattribute überprüfen + + + + + + + + + + +'Die folgende GUID wird für die typelib-ID verwendet, wenn dieses Projekt für COM verfügbar gemacht wird. + + +' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +' +' Hauptversion +' Nebenversion +' Buildnummer +' Revision +' +' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +' indem Sie "*" wie unten gezeigt eingeben: +' + + + diff --git a/ChatClient/My Project/Resources.Designer.vb b/ChatClient/My Project/Resources.Designer.vb new file mode 100644 index 00000000..8d2d0ef2 --- /dev/null +++ b/ChatClient/My Project/Resources.Designer.vb @@ -0,0 +1,62 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My.Resources + + 'This class was auto-generated by the StronglyTypedResourceBuilder + 'class via a tool like ResGen or Visual Studio. + 'To add or remove a member, edit your .ResX file then rerun ResGen + 'with the /str option, or rebuild your VS project. + ''' + ''' A strongly-typed resource class, for looking up localized strings, etc. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' Returns the cached ResourceManager instance used by this class. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ChatClient.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' Overrides the current thread's CurrentUICulture property for all + ''' resource lookups using this strongly typed resource class. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set(ByVal value As Global.System.Globalization.CultureInfo) + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/ChatClient/My Project/Resources.resx b/ChatClient/My Project/Resources.resx new file mode 100644 index 00000000..af7dbebb --- /dev/null +++ b/ChatClient/My Project/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ChatClient/My Project/Settings.Designer.vb b/ChatClient/My Project/Settings.Designer.vb new file mode 100644 index 00000000..cca268a9 --- /dev/null +++ b/ChatClient/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) + +#Region "My.Settings Auto-Save Functionality" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.ChatClient.My.MySettings + Get + Return Global.ChatClient.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/ChatClient/My Project/Settings.settings b/ChatClient/My Project/Settings.settings new file mode 100644 index 00000000..85b890b3 --- /dev/null +++ b/ChatClient/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/ChatServer/ChatServer.vbproj b/ChatServer/ChatServer.vbproj new file mode 100644 index 00000000..5afc74e5 --- /dev/null +++ b/ChatServer/ChatServer.vbproj @@ -0,0 +1,9 @@ + + + + Exe + ChatServer + netcoreapp3.1 + + + diff --git a/ChatServer/Program.vb b/ChatServer/Program.vb new file mode 100644 index 00000000..22d9ab54 --- /dev/null +++ b/ChatServer/Program.vb @@ -0,0 +1,114 @@ +Imports System +Imports System.Net.Sockets +Imports System.Text +Module Program + Dim clientsList As New Hashtable + Sub Main() + + Dim serverSocket As New TcpListener(8888) + Dim clientSocket As TcpClient + Dim counter As Integer + + serverSocket.Start() + msg("Chat Server Started ....") + counter = 0 + + While (True) + counter += 1 + clientSocket = serverSocket.AcceptTcpClient() + + Dim bytesFrom(10024) As Byte + Dim dataFromClient As String + + Dim networkStream As NetworkStream = + clientSocket.GetStream() + networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize)) + dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom) + dataFromClient = + dataFromClient.Substring(0, dataFromClient.IndexOf("$")) + + clientsList(dataFromClient) = clientSocket + + broadcast(dataFromClient + " Joined ", dataFromClient, False) + + msg(dataFromClient + " Joined chat room ") + Dim client As New handleClinet + client.startClient(clientSocket, dataFromClient, clientsList) + End While + + clientSocket.Close() + serverSocket.Stop() + msg("exit") + Console.ReadLine() + End Sub + + Sub msg(ByVal mesg As String) + mesg.Trim() + Console.WriteLine(" >> " + mesg) + End Sub + Private Sub broadcast(ByVal msg As String, + ByVal uName As String, ByVal flag As Boolean) + Dim Item As DictionaryEntry + For Each Item In clientsList + Dim broadcastSocket As TcpClient + broadcastSocket = CType(Item.Value, TcpClient) + Dim broadcastStream As NetworkStream = + broadcastSocket.GetStream() + Dim broadcastBytes As [Byte]() + + If flag = True Then + broadcastBytes = Encoding.ASCII.GetBytes(uName + " says : " + msg) + Else + broadcastBytes = Encoding.ASCII.GetBytes(msg) + End If + + broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length) + broadcastStream.Flush() + Next + End Sub + + Public Class handleClinet + Dim clientSocket As TcpClient + Dim clNo As String + Dim clientsList As Hashtable + + Public Sub startClient(ByVal inClientSocket As TcpClient, + ByVal clineNo As String, ByVal cList As Hashtable) + Me.clientSocket = inClientSocket + Me.clNo = clineNo + Me.clientsList = cList + Dim ctThread As Threading.Thread = New Threading.Thread(AddressOf doChat) + ctThread.Start() + End Sub + + Private Sub doChat() + 'Dim infiniteCounter As Integer + Dim requestCount As Integer + Dim bytesFrom(10024) As Byte + Dim dataFromClient As String + Dim sendBytes As [Byte]() + Dim serverResponse As String + Dim rCount As String + requestCount = 0 + + While (True) + Try + requestCount = requestCount + 1 + Dim networkStream As NetworkStream = + clientSocket.GetStream() + networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize)) + dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom) + dataFromClient = + dataFromClient.Substring(0, dataFromClient.IndexOf("$")) + msg("From client - " + clNo + " : " + dataFromClient) + rCount = Convert.ToString(requestCount) + + broadcast(dataFromClient, clNo, True) + Catch ex As Exception + msg($"### ERROR {ex.ToString}") + End Try + End While + End Sub + + End Class +End Module diff --git a/DDMonorepo.sln b/DDMonorepo.sln index 14fb2b72..39372e2f 100644 --- a/DDMonorepo.sln +++ b/DDMonorepo.sln @@ -114,6 +114,10 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DDEDMLicenseService", "Serv EndProject Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "GUIs.Test.EDMIBenchmark", "GUIs.Test.EDMIBenchmark\GUIs.Test.EDMIBenchmark.vbproj", "{5FDEC007-7AE0-4829-B1AE-6165E29375DA}" EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ChatServer", "ChatServer\ChatServer.vbproj", "{C8F9C3DD-9328-49E3-8530-48E6A4C82CAF}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ChatClient", "ChatClient\ChatClient.vbproj", "{9713484C-6EE3-4D7E-B6E6-F32CF6B6BB6C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -296,6 +300,14 @@ Global {5FDEC007-7AE0-4829-B1AE-6165E29375DA}.Debug|Any CPU.Build.0 = Debug|Any CPU {5FDEC007-7AE0-4829-B1AE-6165E29375DA}.Release|Any CPU.ActiveCfg = Release|Any CPU {5FDEC007-7AE0-4829-B1AE-6165E29375DA}.Release|Any CPU.Build.0 = Release|Any CPU + {C8F9C3DD-9328-49E3-8530-48E6A4C82CAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C8F9C3DD-9328-49E3-8530-48E6A4C82CAF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C8F9C3DD-9328-49E3-8530-48E6A4C82CAF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C8F9C3DD-9328-49E3-8530-48E6A4C82CAF}.Release|Any CPU.Build.0 = Release|Any CPU + {9713484C-6EE3-4D7E-B6E6-F32CF6B6BB6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9713484C-6EE3-4D7E-B6E6-F32CF6B6BB6C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9713484C-6EE3-4D7E-B6E6-F32CF6B6BB6C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9713484C-6EE3-4D7E-B6E6-F32CF6B6BB6C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -345,6 +357,8 @@ Global {7DEEC36E-EA5F-4711-AD1E-FD8894F4AD77} = {7AF3F9C2-C939-4A08-95C1-0453207E298A} {CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C} = {7AF3F9C2-C939-4A08-95C1-0453207E298A} {5FDEC007-7AE0-4829-B1AE-6165E29375DA} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A} + {C8F9C3DD-9328-49E3-8530-48E6A4C82CAF} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC} + {9713484C-6EE3-4D7E-B6E6-F32CF6B6BB6C} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C1BE4090-A0FD-48AF-86CB-39099D14B286}