From 0b3929cac8b517baf76053b27f0201416314a450 Mon Sep 17 00:00:00 2001 From: Ninjastorm380 Date: Wed, 2 Mar 2022 21:01:09 -0500 Subject: [PATCH] push V3 code --- .../ClientServerTestLib.vbproj | 14 - ClientServerTestLib/TestClient.vb | 86 ---- ClientServerTestLib/TestServer.vb | 74 --- ...ientServerTestLib.vbproj.nuget.dgspec.json | 122 ----- .../ClientServerTestLib.vbproj.nuget.g.props | 18 - ...ClientServerTestLib.vbproj.nuget.g.targets | 9 - ...tandard,Version=v2.0.AssemblyAttributes.vb | 7 - .../ClientServerTestLib.assets.cache | Bin 198 -> 0 bytes ...tServerTestLib.vbproj.FileListAbsolute.txt | 0 ClientServerTestLib/obj/project.assets.json | 260 ---------- ClientServerTestLib/obj/project.nuget.cache | 11 - .../obj/project.packagespec.json | 1 - .../obj/rider.project.restore.info | 1 - Networking.sln | 28 -- Networking/ClientBase.vb | 29 -- Networking/FastRNG.vb | 15 - Networking/LockGovernor.vb | 42 -- Networking/LoopGovernor.vb | 43 -- Networking/MemoryQueueStream.vb | 26 - Networking/Networking.vbproj | 8 - Networking/ServerBase.vb | 59 --- Networking/TCPClient.vb | 475 ------------------ .../netstandard2.0/Microsoft.VisualBasic.dll | Bin 68096 -> 0 bytes ...tandard,Version=v2.0.AssemblyAttributes.vb | 7 - .../netstandard2.0/Networking.assets.cache | Bin 198 -> 0 bytes .../Networking.vbproj.FileListAbsolute.txt | 0 .../obj/Networking.vbproj.nuget.dgspec.json | 63 --- .../obj/Networking.vbproj.nuget.g.props | 18 - .../obj/Networking.vbproj.nuget.g.targets | 9 - Networking/obj/project.assets.json | 240 --------- Networking/obj/project.nuget.cache | 11 - Networking/obj/project.packagespec.json | 1 - Networking/obj/rider.project.restore.info | 1 - NetworkingTester/MainForm.vb | 162 ------ .../My Project/Application.Designer.vb | 13 - NetworkingTester/My Project/Application.myapp | 10 - NetworkingTester/My Project/AssemblyInfo.vb | 35 -- NetworkingTester/NetworkingTester.vbproj | 86 ---- ...ework,Version=v4.6.1.AssemblyAttributes.vb | 7 - ...ework,Version=v4.6.2.AssemblyAttributes.vb | 7 - ...ework,Version=v4.7.1.AssemblyAttributes.vb | 7 - ...amework,Version=v4.8.AssemblyAttributes.vb | 7 - ...tworkingTester.vbproj.FileListAbsolute.txt | 0 43 files changed, 2012 deletions(-) delete mode 100644 ClientServerTestLib/ClientServerTestLib.vbproj delete mode 100644 ClientServerTestLib/TestClient.vb delete mode 100644 ClientServerTestLib/TestServer.vb delete mode 100644 ClientServerTestLib/obj/ClientServerTestLib.vbproj.nuget.dgspec.json delete mode 100644 ClientServerTestLib/obj/ClientServerTestLib.vbproj.nuget.g.props delete mode 100644 ClientServerTestLib/obj/ClientServerTestLib.vbproj.nuget.g.targets delete mode 100644 ClientServerTestLib/obj/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.vb delete mode 100644 ClientServerTestLib/obj/Debug/netstandard2.0/ClientServerTestLib.assets.cache delete mode 100644 ClientServerTestLib/obj/Debug/netstandard2.0/ClientServerTestLib.vbproj.FileListAbsolute.txt delete mode 100644 ClientServerTestLib/obj/project.assets.json delete mode 100644 ClientServerTestLib/obj/project.nuget.cache delete mode 100644 ClientServerTestLib/obj/project.packagespec.json delete mode 100644 ClientServerTestLib/obj/rider.project.restore.info delete mode 100644 Networking.sln delete mode 100644 Networking/ClientBase.vb delete mode 100644 Networking/FastRNG.vb delete mode 100644 Networking/LockGovernor.vb delete mode 100644 Networking/LoopGovernor.vb delete mode 100644 Networking/MemoryQueueStream.vb delete mode 100644 Networking/Networking.vbproj delete mode 100644 Networking/ServerBase.vb delete mode 100644 Networking/TCPClient.vb delete mode 100755 Networking/bin/Debug/netstandard2.0/Microsoft.VisualBasic.dll delete mode 100644 Networking/obj/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.vb delete mode 100644 Networking/obj/Debug/netstandard2.0/Networking.assets.cache delete mode 100644 Networking/obj/Debug/netstandard2.0/Networking.vbproj.FileListAbsolute.txt delete mode 100644 Networking/obj/Networking.vbproj.nuget.dgspec.json delete mode 100644 Networking/obj/Networking.vbproj.nuget.g.props delete mode 100644 Networking/obj/Networking.vbproj.nuget.g.targets delete mode 100644 Networking/obj/project.assets.json delete mode 100644 Networking/obj/project.nuget.cache delete mode 100644 Networking/obj/project.packagespec.json delete mode 100644 Networking/obj/rider.project.restore.info delete mode 100644 NetworkingTester/MainForm.vb delete mode 100644 NetworkingTester/My Project/Application.Designer.vb delete mode 100644 NetworkingTester/My Project/Application.myapp delete mode 100644 NetworkingTester/My Project/AssemblyInfo.vb delete mode 100644 NetworkingTester/NetworkingTester.vbproj delete mode 100644 NetworkingTester/obj/Debug/.NETFramework,Version=v4.6.1.AssemblyAttributes.vb delete mode 100644 NetworkingTester/obj/Debug/.NETFramework,Version=v4.6.2.AssemblyAttributes.vb delete mode 100644 NetworkingTester/obj/Debug/.NETFramework,Version=v4.7.1.AssemblyAttributes.vb delete mode 100644 NetworkingTester/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb delete mode 100644 NetworkingTester/obj/Debug/NetworkingTester.vbproj.FileListAbsolute.txt diff --git a/ClientServerTestLib/ClientServerTestLib.vbproj b/ClientServerTestLib/ClientServerTestLib.vbproj deleted file mode 100644 index a816000..0000000 --- a/ClientServerTestLib/ClientServerTestLib.vbproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - ClientServerTestLib - netstandard2.0 - On - Off - - - - - - - diff --git a/ClientServerTestLib/TestClient.vb b/ClientServerTestLib/TestClient.vb deleted file mode 100644 index 9d30826..0000000 --- a/ClientServerTestLib/TestClient.vb +++ /dev/null @@ -1,86 +0,0 @@ -Imports Networking -Imports Networking.Bases -Imports Networking.Governors - -Public Class TestClient - inherits Client - - Dim CurrentTCPClient As TCPClient = Nothing - - - Private ReadOnly CommandTestLock As New LockGovernor(of Byte()()) - Public Function CommandTest As Integer - If CurrentTCPClient IsNot Nothing AndAlso CurrentTCPClient.Connected = True - CurrentTCPClient.WriteJagged({Text.Encoding.ASCII.GetBytes("server.commands.test")},0) - Dim Result As LockGovernor(of Byte()()).LockResult = CommandTestLock.Lock() - Return BitConverter.ToInt32(Result.ReturnedObject(1),0) - Else - Return -1 - End If - End Function - - Private ReadOnly IntegrityTestBeginLock As New LockGovernor(of Byte()()) - Public Function IntegrityTestBegin As Integer - If CurrentTCPClient IsNot Nothing AndAlso CurrentTCPClient.Connected = True - CurrentTCPClient.WriteJagged({Text.Encoding.ASCII.GetBytes("server.integrity.test.begin")},0) - Dim Result As LockGovernor(of Byte()()).LockResult = IntegrityTestBeginLock.Lock() - Return BitConverter.ToInt32(Result.ReturnedObject(1),0) - Else - Return -1 - End If - End Function - - Private ReadOnly IntegrityTestEndLock As New LockGovernor(of Byte()()) - Public Function IntegrityTestEnd As Integer - If CurrentTCPClient IsNot Nothing AndAlso CurrentTCPClient.Connected = True - CurrentTCPClient.WriteJagged({Text.Encoding.ASCII.GetBytes("server.integrity.test.end")},0) - Dim Result As LockGovernor(of Byte()()).LockResult = IntegrityTestEndLock.Lock() - Return BitConverter.ToInt32(Result.ReturnedObject(1),0) - Else - Return -1 - End If - End Function - - Protected Overrides Sub ClientConnecting() - Console.WriteLine("Client: connecting to server...") - End Sub - - Protected Overrides Sub ClientDisconnecting() - Console.WriteLine("Client: disconnecting from server...") - End Sub - - Protected Overrides Sub ClientConnected() - Console.WriteLine("Client: connected to server") - End Sub - - Protected Overrides Sub ClientDisconnected() - Console.WriteLine("Client: disconnected from server") - End Sub - - Protected Overrides Sub Main(Connection As TCPClient) - Dim Governor As New LoopGovernor(25) - CurrentTCPClient = Connection - Connection.AddChannel(0) - Do While Connection.Connected = True - Governor.LoopsPerSecond = Connection.AutoCurrentDynamicSpeed - If Connection.Available(0) > 0 Then - Dim Input As Byte()() = Nothing - Connection.ReadJagged(Input,0) - Dim Command As String = Text.Encoding.ASCII.GetString(Input(0)) - Select Case Command - Case "server.commands.test.return" - CommandTestLock.Unlock(Input) - Case "server.integrity.test.begin.return" - IntegrityTestBeginLock.Unlock(Input) - Case "server.integrity.test.end.return" - IntegrityTestEndLock.Unlock(Input) - Case "server.integrity.test.ping" - Console.WriteLine("Client: received server ping. ponging...") - Connection.WriteJagged({Text.Encoding.ASCII.GetBytes("server.integrity.test.pong")},0) - End Select - End If - Governor.Limit() - Loop - Connection.RemoveChannel(0) - End Sub -End Class \ No newline at end of file diff --git a/ClientServerTestLib/TestServer.vb b/ClientServerTestLib/TestServer.vb deleted file mode 100644 index 4cb7bde..0000000 --- a/ClientServerTestLib/TestServer.vb +++ /dev/null @@ -1,74 +0,0 @@ -Imports Networking - -Public Class TestServer - Inherits Bases.Server - - Protected Overrides Sub ServerStarting() - Console.WriteLine("Server: starting...") - End Sub - - Protected Overrides Sub ServerStopping() - Console.WriteLine("Server: stopping...") - End Sub - - Protected Overrides Sub ServerStarted() - Console.WriteLine("Server: started") - End Sub - - Protected Overrides Sub ServerStopped() - Console.WriteLine("Server: stopped") - End Sub - - Protected Overrides Sub ClientConnected(Connection As TCPClient) - Console.WriteLine("Server: client connected to server") - End Sub - - Protected Overrides Sub ClientDisconnected(Connection As TCPClient) - Console.WriteLine("Server: client disconnected from server") - End Sub - - Protected Overrides Sub Main(Connection As TCPClient) - Dim Governor As New Governors.LoopGovernor(25) - Connection.AddChannel(0) - Dim IsRunningIntegrityTest As Boolean = False - Do While Connection.Connected = True And Online = True - Governor.LoopsPerSecond = Connection.AutoCurrentDynamicSpeed - If Connection.Available(0) > 0 Then - Dim Input As Byte()() = Nothing - Connection.ReadJagged(Input,0) - Dim Command As String = Text.Encoding.ASCII.GetString(Input(0)) - Select Case Command - Case "server.commands.test" - Connection.WriteJagged({Text.Encoding.ASCII.GetBytes("server.commands.test.return"),BitConverter.GetBytes(0)},0) - Case "server.integrity.test.begin" - If IsRunningIntegrityTest = False Then - IsRunningIntegrityTest = true - Connection.WriteJagged({Text.Encoding.ASCII.GetBytes("server.integrity.test.ping")},0) - - Connection.WriteJagged({Text.Encoding.ASCII.GetBytes("server.integrity.test.begin.return"),BitConverter.GetBytes(0)},0) - Else - Connection.WriteJagged({Text.Encoding.ASCII.GetBytes("server.integrity.test.begin.return"),BitConverter.GetBytes(1)},0) - End If - - Case "server.integrity.test.end" - If IsRunningIntegrityTest = true Then - IsRunningIntegrityTest = false - Connection.WriteJagged({Text.Encoding.ASCII.GetBytes("server.integrity.test.end.return"),BitConverter.GetBytes(0)},0) - Else - Connection.WriteJagged({Text.Encoding.ASCII.GetBytes("server.integrity.test.end.return"),BitConverter.GetBytes(1)},0) - End If - Case "server.integrity.test.pong" - - If IsRunningIntegrityTest = True Then - Console.WriteLine("Server: received client pong, and continue is true. pinging...") - Connection.WriteJagged({Text.Encoding.ASCII.GetBytes("server.integrity.test.ping")},0) - Else - Console.WriteLine("Server: received client pong, and continue is false. stopping test.") - End If - End Select - End If - Governor.Limit() - Loop - Connection.RemoveChannel(0) - End Sub -End Class \ No newline at end of file diff --git a/ClientServerTestLib/obj/ClientServerTestLib.vbproj.nuget.dgspec.json b/ClientServerTestLib/obj/ClientServerTestLib.vbproj.nuget.dgspec.json deleted file mode 100644 index 4e498ea..0000000 --- a/ClientServerTestLib/obj/ClientServerTestLib.vbproj.nuget.dgspec.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "format": 1, - "restore": { - "/home/demon4hire/RiderProjects/Networking/ClientServerTestLib/ClientServerTestLib.vbproj": {} - }, - "projects": { - "/home/demon4hire/RiderProjects/Networking/ClientServerTestLib/ClientServerTestLib.vbproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "/home/demon4hire/RiderProjects/Networking/ClientServerTestLib/ClientServerTestLib.vbproj", - "projectName": "ClientServerTestLib", - "projectPath": "/home/demon4hire/RiderProjects/Networking/ClientServerTestLib/ClientServerTestLib.vbproj", - "packagesPath": "/home/demon4hire/.nuget/packages/", - "outputPath": "/home/demon4hire/RiderProjects/Networking/ClientServerTestLib/obj/", - "projectStyle": "PackageReference", - "configFilePaths": [ - "/home/demon4hire/.nuget/NuGet/NuGet.Config" - ], - "originalTargetFrameworks": [ - "netstandard2.0" - ], - "sources": { - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "projectReferences": { - "/home/demon4hire/RiderProjects/Networking/Networking/Networking.vbproj": { - "projectPath": "/home/demon4hire/RiderProjects/Networking/Networking/Networking.vbproj" - } - } - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - } - }, - "frameworks": { - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "dependencies": { - "NETStandard.Library": { - "suppressParent": "All", - "target": "Package", - "version": "[2.0.3, )", - "autoReferenced": true - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48" - ], - "assetTargetFallback": true, - "warn": true, - "runtimeIdentifierGraphPath": "/usr/lib/mono/msbuild/Current/bin/RuntimeIdentifierGraph.json" - } - } - }, - "/home/demon4hire/RiderProjects/Networking/Networking/Networking.vbproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "/home/demon4hire/RiderProjects/Networking/Networking/Networking.vbproj", - "projectName": "Networking", - "projectPath": "/home/demon4hire/RiderProjects/Networking/Networking/Networking.vbproj", - "packagesPath": "/home/demon4hire/.nuget/packages/", - "outputPath": "/home/demon4hire/RiderProjects/Networking/Networking/obj/", - "projectStyle": "PackageReference", - "configFilePaths": [ - "/home/demon4hire/.nuget/NuGet/NuGet.Config" - ], - "originalTargetFrameworks": [ - "netstandard2.0" - ], - "sources": { - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - } - }, - "frameworks": { - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "dependencies": { - "NETStandard.Library": { - "suppressParent": "All", - "target": "Package", - "version": "[2.0.3, )", - "autoReferenced": true - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48" - ], - "assetTargetFallback": true, - "warn": true, - "runtimeIdentifierGraphPath": "/usr/lib/mono/msbuild/Current/bin/RuntimeIdentifierGraph.json" - } - } - } - } -} \ No newline at end of file diff --git a/ClientServerTestLib/obj/ClientServerTestLib.vbproj.nuget.g.props b/ClientServerTestLib/obj/ClientServerTestLib.vbproj.nuget.g.props deleted file mode 100644 index 00da0d3..0000000 --- a/ClientServerTestLib/obj/ClientServerTestLib.vbproj.nuget.g.props +++ /dev/null @@ -1,18 +0,0 @@ - - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - /home/demon4hire/.nuget/packages/ - /home/demon4hire/.nuget/packages/ - PackageReference - 5.10.0 - - - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - \ No newline at end of file diff --git a/ClientServerTestLib/obj/ClientServerTestLib.vbproj.nuget.g.targets b/ClientServerTestLib/obj/ClientServerTestLib.vbproj.nuget.g.targets deleted file mode 100644 index 0ba3e8c..0000000 --- a/ClientServerTestLib/obj/ClientServerTestLib.vbproj.nuget.g.targets +++ /dev/null @@ -1,9 +0,0 @@ - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - - - \ No newline at end of file diff --git a/ClientServerTestLib/obj/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.vb b/ClientServerTestLib/obj/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.vb deleted file mode 100644 index 0488836..0000000 --- a/ClientServerTestLib/obj/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.vb +++ /dev/null @@ -1,7 +0,0 @@ -' - Option Strict Off - Option Explicit On - - Imports System - Imports System.Reflection - diff --git a/ClientServerTestLib/obj/Debug/netstandard2.0/ClientServerTestLib.assets.cache b/ClientServerTestLib/obj/Debug/netstandard2.0/ClientServerTestLib.assets.cache deleted file mode 100644 index 17d02f064139c48551cc0369b239a92a0cbe2ea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmWIWc6a1rU|{&A_o$@MfxT=a``>=Pxic+tCYc;?&77ZD^C|NA+Mm9~hk$DE0VbfN zv~Ol|QGRiLT8W;YYlw4xQL0`*PGU(~eo<~QNUtzZG`J)&FD0=kMb9TQsVK3i5+u$D r#ESYE`MIh3DXF>nc_tZ|MXCCFd8O&8CHe)4$=QkNsm1yrmAC)^5!^4z diff --git a/ClientServerTestLib/obj/Debug/netstandard2.0/ClientServerTestLib.vbproj.FileListAbsolute.txt b/ClientServerTestLib/obj/Debug/netstandard2.0/ClientServerTestLib.vbproj.FileListAbsolute.txt deleted file mode 100644 index e69de29..0000000 diff --git a/ClientServerTestLib/obj/project.assets.json b/ClientServerTestLib/obj/project.assets.json deleted file mode 100644 index 0265ec9..0000000 --- a/ClientServerTestLib/obj/project.assets.json +++ /dev/null @@ -1,260 +0,0 @@ -{ - "version": 3, - "targets": { - ".NETStandard,Version=v2.0": { - "Microsoft.NETCore.Platforms/1.1.0": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "NETStandard.Library/2.0.3": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - }, - "build": { - "build/netstandard2.0/NETStandard.Library.targets": {} - } - }, - "Networking/1.0.0": { - "type": "project", - "framework": ".NETStandard,Version=v2.0", - "compile": { - "bin/placeholder/Networking.dll": {} - }, - "runtime": { - "bin/placeholder/Networking.dll": {} - } - } - } - }, - "libraries": { - "Microsoft.NETCore.Platforms/1.1.0": { - "sha512": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", - "type": "package", - "path": "microsoft.netcore.platforms/1.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "microsoft.netcore.platforms.1.1.0.nupkg.sha512", - "microsoft.netcore.platforms.nuspec", - "runtime.json" - ] - }, - "NETStandard.Library/2.0.3": { - "sha512": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", - "type": "package", - "path": "netstandard.library/2.0.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "build/netstandard2.0/NETStandard.Library.targets", - "build/netstandard2.0/ref/Microsoft.Win32.Primitives.dll", - "build/netstandard2.0/ref/System.AppContext.dll", - "build/netstandard2.0/ref/System.Collections.Concurrent.dll", - "build/netstandard2.0/ref/System.Collections.NonGeneric.dll", - "build/netstandard2.0/ref/System.Collections.Specialized.dll", - "build/netstandard2.0/ref/System.Collections.dll", - "build/netstandard2.0/ref/System.ComponentModel.Composition.dll", - "build/netstandard2.0/ref/System.ComponentModel.EventBasedAsync.dll", - "build/netstandard2.0/ref/System.ComponentModel.Primitives.dll", - "build/netstandard2.0/ref/System.ComponentModel.TypeConverter.dll", - "build/netstandard2.0/ref/System.ComponentModel.dll", - "build/netstandard2.0/ref/System.Console.dll", - "build/netstandard2.0/ref/System.Core.dll", - "build/netstandard2.0/ref/System.Data.Common.dll", - "build/netstandard2.0/ref/System.Data.dll", - "build/netstandard2.0/ref/System.Diagnostics.Contracts.dll", - "build/netstandard2.0/ref/System.Diagnostics.Debug.dll", - "build/netstandard2.0/ref/System.Diagnostics.FileVersionInfo.dll", - "build/netstandard2.0/ref/System.Diagnostics.Process.dll", - "build/netstandard2.0/ref/System.Diagnostics.StackTrace.dll", - "build/netstandard2.0/ref/System.Diagnostics.TextWriterTraceListener.dll", - "build/netstandard2.0/ref/System.Diagnostics.Tools.dll", - "build/netstandard2.0/ref/System.Diagnostics.TraceSource.dll", - "build/netstandard2.0/ref/System.Diagnostics.Tracing.dll", - "build/netstandard2.0/ref/System.Drawing.Primitives.dll", - "build/netstandard2.0/ref/System.Drawing.dll", - "build/netstandard2.0/ref/System.Dynamic.Runtime.dll", - "build/netstandard2.0/ref/System.Globalization.Calendars.dll", - "build/netstandard2.0/ref/System.Globalization.Extensions.dll", - "build/netstandard2.0/ref/System.Globalization.dll", - "build/netstandard2.0/ref/System.IO.Compression.FileSystem.dll", - "build/netstandard2.0/ref/System.IO.Compression.ZipFile.dll", - "build/netstandard2.0/ref/System.IO.Compression.dll", - "build/netstandard2.0/ref/System.IO.FileSystem.DriveInfo.dll", - "build/netstandard2.0/ref/System.IO.FileSystem.Primitives.dll", - "build/netstandard2.0/ref/System.IO.FileSystem.Watcher.dll", - "build/netstandard2.0/ref/System.IO.FileSystem.dll", - "build/netstandard2.0/ref/System.IO.IsolatedStorage.dll", - "build/netstandard2.0/ref/System.IO.MemoryMappedFiles.dll", - "build/netstandard2.0/ref/System.IO.Pipes.dll", - "build/netstandard2.0/ref/System.IO.UnmanagedMemoryStream.dll", - "build/netstandard2.0/ref/System.IO.dll", - "build/netstandard2.0/ref/System.Linq.Expressions.dll", - "build/netstandard2.0/ref/System.Linq.Parallel.dll", - "build/netstandard2.0/ref/System.Linq.Queryable.dll", - "build/netstandard2.0/ref/System.Linq.dll", - "build/netstandard2.0/ref/System.Net.Http.dll", - "build/netstandard2.0/ref/System.Net.NameResolution.dll", - "build/netstandard2.0/ref/System.Net.NetworkInformation.dll", - "build/netstandard2.0/ref/System.Net.Ping.dll", - "build/netstandard2.0/ref/System.Net.Primitives.dll", - "build/netstandard2.0/ref/System.Net.Requests.dll", - "build/netstandard2.0/ref/System.Net.Security.dll", - "build/netstandard2.0/ref/System.Net.Sockets.dll", - "build/netstandard2.0/ref/System.Net.WebHeaderCollection.dll", - "build/netstandard2.0/ref/System.Net.WebSockets.Client.dll", - "build/netstandard2.0/ref/System.Net.WebSockets.dll", - "build/netstandard2.0/ref/System.Net.dll", - "build/netstandard2.0/ref/System.Numerics.dll", - "build/netstandard2.0/ref/System.ObjectModel.dll", - "build/netstandard2.0/ref/System.Reflection.Extensions.dll", - "build/netstandard2.0/ref/System.Reflection.Primitives.dll", - "build/netstandard2.0/ref/System.Reflection.dll", - "build/netstandard2.0/ref/System.Resources.Reader.dll", - "build/netstandard2.0/ref/System.Resources.ResourceManager.dll", - "build/netstandard2.0/ref/System.Resources.Writer.dll", - "build/netstandard2.0/ref/System.Runtime.CompilerServices.VisualC.dll", - "build/netstandard2.0/ref/System.Runtime.Extensions.dll", - "build/netstandard2.0/ref/System.Runtime.Handles.dll", - "build/netstandard2.0/ref/System.Runtime.InteropServices.RuntimeInformation.dll", - "build/netstandard2.0/ref/System.Runtime.InteropServices.dll", - "build/netstandard2.0/ref/System.Runtime.Numerics.dll", - "build/netstandard2.0/ref/System.Runtime.Serialization.Formatters.dll", - "build/netstandard2.0/ref/System.Runtime.Serialization.Json.dll", - "build/netstandard2.0/ref/System.Runtime.Serialization.Primitives.dll", - "build/netstandard2.0/ref/System.Runtime.Serialization.Xml.dll", - "build/netstandard2.0/ref/System.Runtime.Serialization.dll", - "build/netstandard2.0/ref/System.Runtime.dll", - "build/netstandard2.0/ref/System.Security.Claims.dll", - "build/netstandard2.0/ref/System.Security.Cryptography.Algorithms.dll", - "build/netstandard2.0/ref/System.Security.Cryptography.Csp.dll", - "build/netstandard2.0/ref/System.Security.Cryptography.Encoding.dll", - "build/netstandard2.0/ref/System.Security.Cryptography.Primitives.dll", - "build/netstandard2.0/ref/System.Security.Cryptography.X509Certificates.dll", - "build/netstandard2.0/ref/System.Security.Principal.dll", - "build/netstandard2.0/ref/System.Security.SecureString.dll", - "build/netstandard2.0/ref/System.ServiceModel.Web.dll", - "build/netstandard2.0/ref/System.Text.Encoding.Extensions.dll", - "build/netstandard2.0/ref/System.Text.Encoding.dll", - "build/netstandard2.0/ref/System.Text.RegularExpressions.dll", - "build/netstandard2.0/ref/System.Threading.Overlapped.dll", - "build/netstandard2.0/ref/System.Threading.Tasks.Parallel.dll", - "build/netstandard2.0/ref/System.Threading.Tasks.dll", - "build/netstandard2.0/ref/System.Threading.Thread.dll", - "build/netstandard2.0/ref/System.Threading.ThreadPool.dll", - "build/netstandard2.0/ref/System.Threading.Timer.dll", - "build/netstandard2.0/ref/System.Threading.dll", - "build/netstandard2.0/ref/System.Transactions.dll", - "build/netstandard2.0/ref/System.ValueTuple.dll", - "build/netstandard2.0/ref/System.Web.dll", - "build/netstandard2.0/ref/System.Windows.dll", - "build/netstandard2.0/ref/System.Xml.Linq.dll", - "build/netstandard2.0/ref/System.Xml.ReaderWriter.dll", - "build/netstandard2.0/ref/System.Xml.Serialization.dll", - "build/netstandard2.0/ref/System.Xml.XDocument.dll", - "build/netstandard2.0/ref/System.Xml.XPath.XDocument.dll", - "build/netstandard2.0/ref/System.Xml.XPath.dll", - "build/netstandard2.0/ref/System.Xml.XmlDocument.dll", - "build/netstandard2.0/ref/System.Xml.XmlSerializer.dll", - "build/netstandard2.0/ref/System.Xml.dll", - "build/netstandard2.0/ref/System.dll", - "build/netstandard2.0/ref/mscorlib.dll", - "build/netstandard2.0/ref/netstandard.dll", - "build/netstandard2.0/ref/netstandard.xml", - "lib/netstandard1.0/_._", - "netstandard.library.2.0.3.nupkg.sha512", - "netstandard.library.nuspec" - ] - }, - "Networking/1.0.0": { - "type": "project", - "path": "../Networking/Networking.vbproj", - "msbuildProject": "../Networking/Networking.vbproj" - } - }, - "projectFileDependencyGroups": { - ".NETStandard,Version=v2.0": [ - "NETStandard.Library >= 2.0.3", - "Networking >= 1.0.0" - ] - }, - "packageFolders": { - "/home/demon4hire/.nuget/packages/": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "/home/demon4hire/RiderProjects/Networking/ClientServerTestLib/ClientServerTestLib.vbproj", - "projectName": "ClientServerTestLib", - "projectPath": "/home/demon4hire/RiderProjects/Networking/ClientServerTestLib/ClientServerTestLib.vbproj", - "packagesPath": "/home/demon4hire/.nuget/packages/", - "outputPath": "/home/demon4hire/RiderProjects/Networking/ClientServerTestLib/obj/", - "projectStyle": "PackageReference", - "configFilePaths": [ - "/home/demon4hire/.nuget/NuGet/NuGet.Config" - ], - "originalTargetFrameworks": [ - "netstandard2.0" - ], - "sources": { - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "projectReferences": { - "/home/demon4hire/RiderProjects/Networking/Networking/Networking.vbproj": { - "projectPath": "/home/demon4hire/RiderProjects/Networking/Networking/Networking.vbproj" - } - } - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - } - }, - "frameworks": { - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "dependencies": { - "NETStandard.Library": { - "suppressParent": "All", - "target": "Package", - "version": "[2.0.3, )", - "autoReferenced": true - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48" - ], - "assetTargetFallback": true, - "warn": true, - "runtimeIdentifierGraphPath": "/usr/lib/mono/msbuild/Current/bin/RuntimeIdentifierGraph.json" - } - } - } -} \ No newline at end of file diff --git a/ClientServerTestLib/obj/project.nuget.cache b/ClientServerTestLib/obj/project.nuget.cache deleted file mode 100644 index a96fa43..0000000 --- a/ClientServerTestLib/obj/project.nuget.cache +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": 2, - "dgSpecHash": "IbfjlfC8zy25bj6SBrYee0IO4SAFcXcYaQSTScAUmmpM73IWPtQFlJPVlFPUtdyL2CsofIcy064SuWENNK/8jg==", - "success": true, - "projectFilePath": "/home/demon4hire/RiderProjects/Networking/ClientServerTestLib/ClientServerTestLib.vbproj", - "expectedPackageFiles": [ - "/home/demon4hire/.nuget/packages/microsoft.netcore.platforms/1.1.0/microsoft.netcore.platforms.1.1.0.nupkg.sha512", - "/home/demon4hire/.nuget/packages/netstandard.library/2.0.3/netstandard.library.2.0.3.nupkg.sha512" - ], - "logs": [] -} \ No newline at end of file diff --git a/ClientServerTestLib/obj/project.packagespec.json b/ClientServerTestLib/obj/project.packagespec.json deleted file mode 100644 index 715a611..0000000 --- a/ClientServerTestLib/obj/project.packagespec.json +++ /dev/null @@ -1 +0,0 @@ -"restore":{"projectUniqueName":"/home/demon4hire/RiderProjects/Networking/ClientServerTestLib/ClientServerTestLib.vbproj","projectName":"ClientServerTestLib","projectPath":"/home/demon4hire/RiderProjects/Networking/ClientServerTestLib/ClientServerTestLib.vbproj","outputPath":"/home/demon4hire/RiderProjects/Networking/ClientServerTestLib/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["netstandard2.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"netstandard2.0":{"targetAlias":"netstandard2.0","projectReferences":{"/home/demon4hire/RiderProjects/Networking/Networking/Networking.vbproj":{"projectPath":"/home/demon4hire/RiderProjects/Networking/Networking/Networking.vbproj"}}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"netstandard2.0":{"targetAlias":"netstandard2.0","dependencies":{"NETStandard.Library":{"suppressParent":"All","target":"Package","version":"[2.0.3, )","autoReferenced":true}},"imports":["net461","net462","net47","net471","net472","net48"],"assetTargetFallback":true,"warn":true,"runtimeIdentifierGraphPath":"/usr/lib/mono/msbuild/Current/bin/RuntimeIdentifierGraph.json"}} \ No newline at end of file diff --git a/ClientServerTestLib/obj/rider.project.restore.info b/ClientServerTestLib/obj/rider.project.restore.info deleted file mode 100644 index e1ace38..0000000 --- a/ClientServerTestLib/obj/rider.project.restore.info +++ /dev/null @@ -1 +0,0 @@ -16287838569806942 \ No newline at end of file diff --git a/Networking.sln b/Networking.sln deleted file mode 100644 index e798bd1..0000000 --- a/Networking.sln +++ /dev/null @@ -1,28 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Networking", "Networking\Networking.vbproj", "{91C0BA12-850B-4854-92F2-7590D859833F}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "NetworkingTester", "NetworkingTester\NetworkingTester.vbproj", "{B1233C93-1146-4A6D-8364-AD8389887B38}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ClientServerTestLib", "ClientServerTestLib\ClientServerTestLib.vbproj", "{13FB1CFC-B3B1-4148-BC59-76D64A65109E}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {91C0BA12-850B-4854-92F2-7590D859833F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {91C0BA12-850B-4854-92F2-7590D859833F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {91C0BA12-850B-4854-92F2-7590D859833F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {91C0BA12-850B-4854-92F2-7590D859833F}.Release|Any CPU.Build.0 = Release|Any CPU - {B1233C93-1146-4A6D-8364-AD8389887B38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B1233C93-1146-4A6D-8364-AD8389887B38}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B1233C93-1146-4A6D-8364-AD8389887B38}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B1233C93-1146-4A6D-8364-AD8389887B38}.Release|Any CPU.Build.0 = Release|Any CPU - {13FB1CFC-B3B1-4148-BC59-76D64A65109E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {13FB1CFC-B3B1-4148-BC59-76D64A65109E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {13FB1CFC-B3B1-4148-BC59-76D64A65109E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {13FB1CFC-B3B1-4148-BC59-76D64A65109E}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal diff --git a/Networking/ClientBase.vb b/Networking/ClientBase.vb deleted file mode 100644 index d7e4a3c..0000000 --- a/Networking/ClientBase.vb +++ /dev/null @@ -1,29 +0,0 @@ -Namespace Bases - Public MustInherit Class Client - Private Client As TcpClient = Nothing - Public Sub Connect(Endpoint As Net.IPEndPoint) - If Client Is Nothing OrElse Client.Connected = False - ClientConnecting() - If Client IsNot Nothing Then Client.Dispose() - Client = new TCPClient(Endpoint) - Dim AsyncLaunch As New Threading.Thread(AddressOf AsyncLaunchHelper) : AsyncLaunch.Start() - ClientConnected() - End If - End Sub - Public Sub Disconnect() - If Client IsNot Nothing AndAlso Client.Connected = True - ClientDisconnecting - Client.Close() - End If - End Sub - Private Sub AsyncLaunchHelper() - Main(Client) - ClientDisconnected - End Sub - Protected Mustoverride Sub ClientConnecting() - Protected Mustoverride Sub ClientDisconnecting() - Protected Mustoverride Sub ClientConnected() - Protected Mustoverride Sub ClientDisconnected() - Protected Mustoverride Sub Main(Byval Connection As TCPClient) - End Class -End Namespace diff --git a/Networking/FastRNG.vb b/Networking/FastRNG.vb deleted file mode 100644 index 00f320d..0000000 --- a/Networking/FastRNG.vb +++ /dev/null @@ -1,15 +0,0 @@ -Friend Class FastRNG - Private ReadOnly RngInternal As Random - Sub New(Seeds As Int32()) - Dim MaxPart As Int32 = CInt(Math.Floor(Int32.MaxValue / Seeds.Length)) - Dim FinalSeed As Int32 = 0 - For x = 0 To Seeds.Length - 1 - Dim RNGStepper As New Random(Seeds(x)) - FinalSeed += RNGStepper.Next(-MaxPart, MaxPart) - Next - RngInternal = New Random(FinalSeed) - End Sub - Public Sub GetRNGBytes(ByRef Buffer As Byte()) - RngInternal.NextBytes(Buffer) - End Sub -End Class diff --git a/Networking/LockGovernor.vb b/Networking/LockGovernor.vb deleted file mode 100644 index ca9e2ba..0000000 --- a/Networking/LockGovernor.vb +++ /dev/null @@ -1,42 +0,0 @@ -Namespace Governors - Public Class LockGovernor(of T) - Private ResetLock As Boolean - Private ReadOnly LockGovernor As LoopGovernor - Private LoopMax As Integer = 500 - Private LoopCurrent As Integer = 0 - Private ReadOnly LoopFrequency As Integer = 100 - Private Obj As T = Nothing - Public Structure LockResult - Friend Property TimedOut As Boolean - Public Property ReturnedObject As T - End Structure - Public Sub New(Optional LoopFrequency As Integer = 100) - ResetLock = False - LockGovernor = New LoopGovernor(LoopFrequency) - Me.LoopFrequency = LoopFrequency - End Sub - Public Function Lock(Optional TimeoutMS As Integer = 0) As LockResult - If TimeoutMS <> 0 Then - LoopMax = CInt(Math.Ceiling((TimeoutMS / 1000) * LoopFrequency)) - Else - LoopMax = 0 - End If - LoopCurrent = 0 - Do While ResetLock = False - If LoopMax <> 0 Then - LoopCurrent += 1 - If LoopCurrent >= LoopMax Then - Return New LockResult With {.TimedOut = True, .ReturnedObject = Nothing} - End If - End If - LockGovernor.Limit() - Loop - ResetLock = False - Return New LockResult With {.TimedOut = False, .ReturnedObject = Obj} - End Function - Public Sub Unlock(Optional ObjPassthrough As T = Nothing) - Obj = ObjPassthrough - ResetLock = True - End Sub - End Class -End Namespace diff --git a/Networking/LoopGovernor.vb b/Networking/LoopGovernor.vb deleted file mode 100644 index 4932d9c..0000000 --- a/Networking/LoopGovernor.vb +++ /dev/null @@ -1,43 +0,0 @@ -Namespace Governors - Public Class LoopGovernor - Private LoopStartTime As Long = Stopwatch.GetTimestamp() - Private LoopCount As Long = 0 - Private ReadOnly Frequency As Long = Stopwatch.Frequency - Private Timestamp As Long - - Private ReadOnly DeltaTimeArray(4) As Double - Private DeltaTimeIndex As Integer = 0 - Private DeltaTimeIndex2 As Integer = 0 - Private ReadOnly DeltaStopwatch As New Stopwatch - Private DeltaTime As Double = 0 - Public Property LoopsPerSecond As Integer - Public ReadOnly Property LoopDeltaTime As Double - Get - Return DeltaTime - End Get - End Property - Sub New(Optional LoopsPerSecond As Integer = 60) - Me.LoopsPerSecond = LoopsPerSecond - DeltaStopwatch.Start() - End Sub - Public Sub Limit() - Timestamp = Stopwatch.GetTimestamp() - While (Timestamp - LoopStartTime) * LoopsPerSecond < Frequency * LoopCount - Dim WaitTime As Integer = CInt((LoopStartTime * LoopsPerSecond + Frequency * LoopCount - Timestamp * LoopsPerSecond) * 1000 / (Frequency * LoopsPerSecond)) - If WaitTime > 0 Then Threading.Thread.Sleep(WaitTime) - Timestamp = Stopwatch.GetTimestamp() - End While - If Threading.Interlocked.Increment(LoopCount) > LoopsPerSecond Then - LoopCount = 0 - LoopStartTime = Timestamp - End If - DeltaTimeIndex2 = DeltaTimeIndex - DeltaTimeIndex2 += 1 - If DeltaTimeIndex2 > 4 Then DeltaTimeIndex2 = 0 - DeltaTimeArray(DeltaTimeIndex) = DeltaStopwatch.Elapsed.TotalMilliseconds - DeltaTime = (DeltaTimeArray(0) + DeltaTimeArray(1) + DeltaTimeArray(2) + DeltaTimeArray(3) + DeltaTimeArray(4)) / 5 - DeltaTimeIndex = DeltaTimeIndex2 - DeltaStopwatch.Restart() - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/Networking/MemoryQueueStream.vb b/Networking/MemoryQueueStream.vb deleted file mode 100644 index de4974c..0000000 --- a/Networking/MemoryQueueStream.vb +++ /dev/null @@ -1,26 +0,0 @@ -Friend Class MemoryQueueStream : Inherits IO.MemoryStream - Private InternalLength As Long = 0 - Private MSBuffer As Byte() - Sub New(Optional DefaultSize As Integer = 0) - MyBase.New(DefaultSize) - End Sub - Public Shadows Sub Write(ByRef buffer() As Byte, offset As Integer, count As Integer) - SyncLock Me - Position = InternalLength - MyBase.Write(buffer, offset, count) - InternalLength += count - End SyncLock - End Sub - Public Shadows Sub Read(ByRef buffer() As Byte, offset As Integer, count As Integer, Optional peek As Boolean = False) - SyncLock Me - Position = 0 - MyBase.Read(buffer, offset, count) - If peek = False Then - MSBuffer = GetBuffer - System.Buffer.BlockCopy(MSBuffer, count, MSBuffer, 0, CInt(InternalLength) - count) - SetLength(InternalLength - count) - InternalLength -= count - End If - End SyncLock - End Sub -End Class \ No newline at end of file diff --git a/Networking/Networking.vbproj b/Networking/Networking.vbproj deleted file mode 100644 index d59e2ad..0000000 --- a/Networking/Networking.vbproj +++ /dev/null @@ -1,8 +0,0 @@ - - - - Networking - netstandard2.0 - - - diff --git a/Networking/ServerBase.vb b/Networking/ServerBase.vb deleted file mode 100644 index e462023..0000000 --- a/Networking/ServerBase.vb +++ /dev/null @@ -1,59 +0,0 @@ -Namespace Bases - Public MustInherit Class Server - Private Listener As Net.Sockets.TcpListener - Private ListenerThread As Threading.Thread - Private OnlineBase As Boolean = False - Private TCPTemp As TCPClient - Protected ReadOnly Property Online As Boolean - Get - Return OnlineBase - End Get - End Property - Public Sub Start(Endpoint As Net.IPEndPoint) - If Online = False Then - ServerStarting() - Listener = New Net.Sockets.TcpListener(Endpoint) - 'Listener.Server.SetSocketOption(Net.Sockets.SocketOptionLevel.IPv6, Net.Sockets.SocketOptionName.IPv6Only, False) - ListenerThread = New Threading.Thread(AddressOf ListenerMethod) - OnlineBase = True - Listener.Start() - ListenerThread.Start() - ServerStarted() - End If - End Sub - Public Sub [Stop]() - If Online = True Then - ServerStopping() - Listener.Stop() - OnlineBase = False - Listener.Server.Dispose() - ListenerThread = Nothing - ServerStopped() - End If - End Sub - Private Sub ListenerMethod() - Dim Limiter As New Governors.LoopGovernor(20) - Do While Online = True - If Listener.Pending = True - TCPTemp = New TcpClient(Listener.AcceptSocket) - Dim AsyncLaunch As New Threading.Thread(AddressOf AsyncLaunchHelper) : AsyncLaunch.Start() - End If - Limiter.Limit() - Loop - End Sub - Private Sub AsyncLaunchHelper() - Dim Local As TCPClient = TCPTemp - ClientConnected(Local) - Main(Local) - If Local IsNot Nothing AndAlso Local.Connected = True Then Local.Close() - ClientDisconnected(Local) - End Sub - Protected Mustoverride Sub ServerStarting() - Protected Mustoverride Sub ServerStopping() - Protected Mustoverride Sub ServerStarted() - Protected Mustoverride Sub ServerStopped() - Protected Mustoverride Sub ClientConnected(Connection As TCPClient) - Protected Mustoverride Sub ClientDisconnected(Connection As TCPClient) - Protected Mustoverride Sub Main(Byval Connection As TCPClient) - End Class -End Namespace diff --git a/Networking/TCPClient.vb b/Networking/TCPClient.vb deleted file mode 100644 index 8a42cef..0000000 --- a/Networking/TCPClient.vb +++ /dev/null @@ -1,475 +0,0 @@ -Public Class TCPClient : Inherits Net.Sockets.TcpClient - Private Class RWChannel - Public Property ReadBuffer As MemoryQueueStream - Public Property WriteBuffer As MemoryQueueStream - - Public Property Active As Boolean = False - Public Sub New(Optional Active As Boolean = False, Optional BufferSize As Int32 = 16384) - If Active = True Then - Readbuffer = New MemoryQueueStream(Buffersize) - Writebuffer = New MemoryQueueStream(Buffersize) - Me.Active = Active - End If - End Sub - Public Sub Activate(Optional BufferSize As Int32 = 16384) - If Active = False Then - Readbuffer = New MemoryQueueStream(Buffersize) - Writebuffer = New MemoryQueueStream(Buffersize) - Active = True - End If - End Sub - Public Sub Deactivate() - If Active = True Then - Active = False - Readbuffer.Dispose() - Writebuffer.Dispose() - End If - End Sub - End Class - Private ReadOnly Channels As New Dictionary(Of Int32, RWChannel)(32) - Private TCP_LocalEndpoint As Net.IPEndPoint - Private TCP_RemoteEndpoint As Net.IPEndPoint - Private TCP_Connected As Boolean = False - Private TCP_Connected_Flag_A As Boolean - Private TCP_Connected_Flag_B As Boolean - Private TCP_Dynamic_Speed_Minimum As Int32 = 10 - Private TCP_Dynamic_Speed_Maximum As Int32 = 200 - Private TCP_Dynamic_Speed_Increment As Int32 = 7 - Private TCP_Dynamic_Speed_Decrement As Int32 = 2 - Private TCP_Dynamic_Speed_Sender_Do_Increase As Boolean = False - Private TCP_Dynamic_Speed_Sender_Current_Speed As Int32 = 2 - Private TCP_Dynamic_Speed_Receiver_Do_Increase As Boolean = False - Private TCP_Dynamic_Speed_Receiver_Current_Speed As Int32 = 2 - - Private AES256CSP_Temporal_Sender_Timestamp As DateTime - Private AES256CSP_Temporal_Receiver_Timestamp As DateTime - Private AES256CSP_Temporal_Sender_TimestampBuffer(27) As Byte - Private AES256CSP_Temporal_Receiver_TimestampBuffer(27) As Byte - Private AES256CSP_Temporal_Sender_EncryptionGenerator As FastRNG - Private AES256CSP_Temporal_Receiver_EncryptionGenerator As FastRNG - - Private AES256CSP_Temporal_Receiver_Key(31) As Byte - Private AES256CSP_Temporal_Receiver_IV(15) As Byte - Private AES256CSP_Temporal_Sender_Key(31) As Byte - Private AES256CSP_Temporal_Sender_IV(15) As Byte - - Private AES256CSP_Temporal_BaseStream As Net.Sockets.NetworkStream - Private AES256CSP_Temporal_Receiver As Security.Cryptography.AesCryptoServiceProvider - Private AES256CSP_Temporal_Sender As Security.Cryptography.AesCryptoServiceProvider - Private AES256CSP_Temporal_Receiver_Transform As Security.Cryptography.ICryptoTransform - Private AES256CSP_Temporal_Sender_Transform As Security.Cryptography.ICryptoTransform - Private AES256CSP_Temporal_Receiver_Stream As Security.Cryptography.CryptoStream - Private AES256CSP_Temporal_Sender_Stream As Security.Cryptography.CryptoStream - Private AES256CSP_Temporal_Receiver_Stream_Synchronized As IO.Stream - Private AES256CSP_Temporal_Sender_Stream_Synchronized As IO.Stream - Private AES256CSP_Temporal_BlockSize As Integer - - Private ReadOnly Channel_Receiver_SyncLock_Object As New Object - Private ReadOnly Channel_Sender_SyncLock_Object As New Object - Private ReadOnly Block_Receiver_SyncLock_Object As New Object - Private ReadOnly Block_Sender_SyncLock_Object As New Object - Private ReadOnly TCP_Connected_SyncLock_Object As New Object - Public ReadOnly Property ReceiverCurrentDynamicSpeed As Int32 - Get - Return TCP_Dynamic_Speed_Receiver_Current_Speed - End Get - End Property - Public ReadOnly Property SenderCurrentDynamicSpeed As Int32 - Get - Return TCP_Dynamic_Speed_Sender_Current_Speed - End Get - End Property - Public ReadOnly Property AutoCurrentDynamicSpeed As Int32 - Get - Return Math.Max(TCP_Dynamic_Speed_Receiver_Current_Speed, TCP_Dynamic_Speed_Sender_Current_Speed) - End Get - End Property - Public Sub AddChannel(Channel As Int32, Optional BufferSize As Int32 = 16384) - SyncLock Channel_Receiver_Synclock_Object - SyncLock Channel_Sender_Synclock_Object - If Channels.ContainsKey(Channel) = True Then - If Channels(Channel).Active = False Then Channels(Channel).Activate(BufferSize) - Else - Channels.Add(Channel, New RWChannel(True, BufferSize)) - End If - End SyncLock - End SyncLock - End Sub - Public Sub RemoveChannel(Channel As Int32) - SyncLock Channel_Receiver_Synclock_Object - SyncLock Channel_Sender_Synclock_Object - If Channels.ContainsKey(Channel) = True Then - If Channels(Channel).Active = True Then Channels(Channel).Deactivate() - Channels.Remove(Channel) - End If - End SyncLock - End SyncLock - End Sub - - Public Shadows ReadOnly Property Connected As Boolean - Get - SyncLock TCP_Connected_Synclock_Object - SyncLock Block_Receiver_Synclock_Object - SyncLock Block_Sender_Synclock_Object - If Client.Connected = False Then TCP_Connected = False - If TCP_Connected = False Then Return False - TCP_Connected_Flag_A = Client.Poll(0, Net.Sockets.SelectMode.SelectRead) - TCP_Connected_Flag_B = Client.Available = 0 - If Not TCP_Connected_Flag_A Then Return True - If Not TCP_Connected_Flag_B Then Return True - - Return False - End SyncLock - End SyncLock - End SyncLock - End Get - End Property - Public Shadows ReadOnly Property Available(ByVal Channel As Int32) As Int32 - Get - SyncLock Channel_Receiver_Synclock_Object - SyncLock Channel_Sender_Synclock_Object - If Channels.ContainsKey(Channel) = True Then - If Channels(Channel).Active = True Then - Return CInt(Channels(Channel).Readbuffer.Length) - Else - Return -2 - End If - Else - Return -1 - End If - End SyncLock - End SyncLock - End Get - End Property - Friend Sub New(Socket As Net.Sockets.Socket) - MyBase.New(Socket.AddressFamily) - Client = Socket - Initialize() - End Sub - Friend Sub New(Endpoint As Net.IPEndPoint) - MyBase.New(Endpoint.AddressFamily) - Connect(Endpoint) - Initialize() - End Sub - Public Sub WriteJagged(ByRef Input As Byte()(), ByVal Channel As Int32) - If Channels.ContainsKey(Channel) = True Then - Dim SelectedChannel As RWChannel = Channels(Channel) - If SelectedChannel.Active = True Then - SyncLock Channel_Sender_Synclock_Object - Dim JaggedLength As Int32 = Input.Length - Dim JaggedLengthBytes As Byte() = BitConverter.GetBytes(JaggedLength) - SelectedChannel.Writebuffer.Write(JaggedLengthBytes, 0, 4) - For x = 0 To JaggedLength - 1 - Dim ArrayLength As Int32 = Input(x).Length - Dim ArrayLengthBytes As Byte() = BitConverter.GetBytes(ArrayLength) - SelectedChannel.Writebuffer.Write(ArrayLengthBytes, 0, 4) - SelectedChannel.Writebuffer.Write(Input(x), 0, ArrayLength) - Next - End SyncLock - End If - End If - End Sub - Public Sub ReadJagged(ByRef Output As Byte()(), ByVal Channel As Int32) - If Channels.ContainsKey(Channel) = True Then - Dim SelectedChannel As RWChannel = Channels(Channel) - If SelectedChannel.Active = True Then - SyncLock Channel_Receiver_Synclock_Object - If SelectedChannel.Readbuffer.Length > 0 Then - Dim JaggedLengthBytes(3) As Byte - Channels(Channel).Readbuffer.Read(JaggedLengthBytes, 0, 4) - Dim JaggedLength As Int32 = BitConverter.ToInt32(JaggedLengthBytes, 0) - ReDim Output(JaggedLength - 1) - For x = 0 To JaggedLength - 1 - Dim ArrayLengthBytes(3) As Byte - SelectedChannel.Readbuffer.Read(ArrayLengthBytes, 0, 4) - Dim ArrayLength As Int32 = BitConverter.ToInt32(ArrayLengthBytes, 0) - ReDim Output(x)(ArrayLength - 1) - SelectedChannel.Readbuffer.Read(Output(x), 0, ArrayLength) - Next - End If - End SyncLock - End If - End If - End Sub - Private Sub Initialize() - TCP_RemoteEndpoint = CType(Client.RemoteEndPoint, Net.IPEndPoint) - TCP_LocalEndpoint = CType(Client.LocalEndPoint, Net.IPEndPoint) - Client.SendBufferSize = Int32.MaxValue - Client.ReceiveBufferSize = Int32.MaxValue - - AES256CSP_Temporal_Sender_Timestamp = DateTime.utcNow - - Int32BlockCopyIn(AES256CSP_Temporal_Sender_Timestamp.Year, AES256CSP_Temporal_Sender_TimestampBuffer, 0) - Int32BlockCopyIn(AES256CSP_Temporal_Sender_Timestamp.Month, AES256CSP_Temporal_Sender_TimestampBuffer, 4) - Int32BlockCopyIn(AES256CSP_Temporal_Sender_Timestamp.Day, AES256CSP_Temporal_Sender_TimestampBuffer, 8) - Int32BlockCopyIn(AES256CSP_Temporal_Sender_Timestamp.Hour, AES256CSP_Temporal_Sender_TimestampBuffer, 12) - Int32BlockCopyIn(AES256CSP_Temporal_Sender_Timestamp.Minute, AES256CSP_Temporal_Sender_TimestampBuffer, 16) - Int32BlockCopyIn(AES256CSP_Temporal_Sender_Timestamp.Second, AES256CSP_Temporal_Sender_TimestampBuffer, 20) - Int32BlockCopyIn(AES256CSP_Temporal_Sender_Timestamp.Millisecond, AES256CSP_Temporal_Sender_TimestampBuffer, 24) - - AES256CSP_Temporal_BaseStream = GetStream - - SendBlock(AES256CSP_Temporal_Sender_TimestampBuffer,16, AES256CSP_Temporal_BaseStream) - ReceiveBlock(AES256CSP_Temporal_Receiver_TimestampBuffer,AES256CSP_Temporal_BaseStream) - - AES256CSP_Temporal_Receiver_Timestamp = New DateTime( - Int32BlockCopyOut(AES256CSP_Temporal_Receiver_TimestampBuffer, 0), - Int32BlockCopyOut(AES256CSP_Temporal_Receiver_TimestampBuffer, 4), - Int32BlockCopyOut(AES256CSP_Temporal_Receiver_TimestampBuffer, 8), - Int32BlockCopyOut(AES256CSP_Temporal_Receiver_TimestampBuffer, 12), - Int32BlockCopyOut(AES256CSP_Temporal_Receiver_TimestampBuffer, 16), - Int32BlockCopyOut(AES256CSP_Temporal_Receiver_TimestampBuffer, 20), - Int32BlockCopyOut(AES256CSP_Temporal_Receiver_TimestampBuffer, 24)) - - AES256CSP_Temporal_Sender_EncryptionGenerator = New FastRNG( - {AES256CSP_Temporal_Sender_Timestamp.Year, - AES256CSP_Temporal_Sender_Timestamp.Month, - AES256CSP_Temporal_Sender_Timestamp.Day, - AES256CSP_Temporal_Sender_Timestamp.Hour, - AES256CSP_Temporal_Sender_Timestamp.Minute, - AES256CSP_Temporal_Sender_Timestamp.Second, - AES256CSP_Temporal_Sender_Timestamp.Millisecond, - TCP_LocalEndpoint.Port}) - AES256CSP_Temporal_Sender_EncryptionGenerator.GetRNGBytes(AES256CSP_Temporal_Sender_Key) - AES256CSP_Temporal_Sender_EncryptionGenerator.GetRNGBytes(AES256CSP_Temporal_Sender_IV) - AES256CSP_Temporal_Sender = New Security.Cryptography.AesCryptoServiceProvider With { - .Key = AES256CSP_Temporal_Sender_Key, - .IV = AES256CSP_Temporal_Sender_IV, - .Padding = Security.Cryptography.PaddingMode.None} - AES256CSP_Temporal_Sender_Transform = AES256CSP_Temporal_Sender.CreateEncryptor - AES256CSP_Temporal_Sender_Stream = New Security.Cryptography.CryptoStream( - AES256CSP_Temporal_BaseStream, - AES256CSP_Temporal_Sender_Transform, - Security.Cryptography.CryptoStreamMode.Write) - AES256CSP_Temporal_Sender_Stream_Synchronized = IO.Stream.Synchronized(AES256CSP_Temporal_Sender_Stream) - - AES256CSP_Temporal_Receiver_EncryptionGenerator = New FastRNG( - {AES256CSP_Temporal_Receiver_Timestamp.Year, - AES256CSP_Temporal_Receiver_Timestamp.Month, - AES256CSP_Temporal_Receiver_Timestamp.Day, - AES256CSP_Temporal_Receiver_Timestamp.Hour, - AES256CSP_Temporal_Receiver_Timestamp.Minute, - AES256CSP_Temporal_Receiver_Timestamp.Second, - AES256CSP_Temporal_Receiver_Timestamp.Millisecond, - TCP_RemoteEndpoint.Port}) - AES256CSP_Temporal_Receiver_EncryptionGenerator.GetRNGBytes(AES256CSP_Temporal_Receiver_Key) - AES256CSP_Temporal_Receiver_EncryptionGenerator.GetRNGBytes(AES256CSP_Temporal_Receiver_IV) - AES256CSP_Temporal_Receiver = New Security.Cryptography.AesCryptoServiceProvider With { - .Key = AES256CSP_Temporal_Receiver_Key, - .IV = AES256CSP_Temporal_Receiver_IV, - .Padding = Security.Cryptography.PaddingMode.None} - AES256CSP_Temporal_Receiver_Transform = AES256CSP_Temporal_Receiver.CreateDecryptor - AES256CSP_Temporal_Receiver_Stream = New Security.Cryptography.CryptoStream( - AES256CSP_Temporal_BaseStream, - AES256CSP_Temporal_Receiver_Transform, - Security.Cryptography.CryptoStreamMode.Read) - AES256CSP_Temporal_Receiver_Stream_Synchronized = IO.Stream.Synchronized(AES256CSP_Temporal_Receiver_Stream) - - AES256CSP_Temporal_Blocksize = CInt(AES256CSP_Temporal_Receiver.BlockSize / 8) - - - - AES256CSP_Temporal_Sender_Timestamp = DateTime.Now - - Int32BlockCopyIn(AES256CSP_Temporal_Sender_Timestamp.Year, AES256CSP_Temporal_Sender_TimestampBuffer, 0) - Int32BlockCopyIn(AES256CSP_Temporal_Sender_Timestamp.Month, AES256CSP_Temporal_Sender_TimestampBuffer, 4) - Int32BlockCopyIn(AES256CSP_Temporal_Sender_Timestamp.Day, AES256CSP_Temporal_Sender_TimestampBuffer, 8) - Int32BlockCopyIn(AES256CSP_Temporal_Sender_Timestamp.Hour, AES256CSP_Temporal_Sender_TimestampBuffer, 12) - Int32BlockCopyIn(AES256CSP_Temporal_Sender_Timestamp.Minute, AES256CSP_Temporal_Sender_TimestampBuffer, 16) - Int32BlockCopyIn(AES256CSP_Temporal_Sender_Timestamp.Second, AES256CSP_Temporal_Sender_TimestampBuffer, 20) - Int32BlockCopyIn(AES256CSP_Temporal_Sender_Timestamp.Millisecond, AES256CSP_Temporal_Sender_TimestampBuffer, 24) - - AES256CSP_Temporal_BaseStream = GetStream - - SendBlock(AES256CSP_Temporal_Sender_TimestampBuffer) - ReceiveBlock(AES256CSP_Temporal_Receiver_TimestampBuffer) - - AES256CSP_Temporal_Receiver_Timestamp = New DateTime( - Int32BlockCopyOut(AES256CSP_Temporal_Receiver_TimestampBuffer, 0), - Int32BlockCopyOut(AES256CSP_Temporal_Receiver_TimestampBuffer, 4), - Int32BlockCopyOut(AES256CSP_Temporal_Receiver_TimestampBuffer, 8), - Int32BlockCopyOut(AES256CSP_Temporal_Receiver_TimestampBuffer, 12), - Int32BlockCopyOut(AES256CSP_Temporal_Receiver_TimestampBuffer, 16), - Int32BlockCopyOut(AES256CSP_Temporal_Receiver_TimestampBuffer, 20), - Int32BlockCopyOut(AES256CSP_Temporal_Receiver_TimestampBuffer, 24)) - - AES256CSP_Temporal_Sender_EncryptionGenerator = New FastRNG( - {AES256CSP_Temporal_Sender_Timestamp.Year, - AES256CSP_Temporal_Sender_Timestamp.Month, - AES256CSP_Temporal_Sender_Timestamp.Day, - AES256CSP_Temporal_Sender_Timestamp.Hour, - AES256CSP_Temporal_Sender_Timestamp.Minute, - AES256CSP_Temporal_Sender_Timestamp.Second, - AES256CSP_Temporal_Sender_Timestamp.Millisecond, - TCP_RemoteEndpoint.Port}) - AES256CSP_Temporal_Sender_EncryptionGenerator.GetRNGBytes(AES256CSP_Temporal_Sender_Key) - AES256CSP_Temporal_Sender_EncryptionGenerator.GetRNGBytes(AES256CSP_Temporal_Sender_IV) - AES256CSP_Temporal_Sender = New Security.Cryptography.AesCryptoServiceProvider With { - .Key = AES256CSP_Temporal_Sender_Key, - .IV = AES256CSP_Temporal_Sender_IV, - .Padding = Security.Cryptography.PaddingMode.None} - AES256CSP_Temporal_Sender_Transform = AES256CSP_Temporal_Sender.CreateEncryptor - AES256CSP_Temporal_Sender_Stream = New Security.Cryptography.CryptoStream( - AES256CSP_Temporal_BaseStream, - AES256CSP_Temporal_Sender_Transform, - Security.Cryptography.CryptoStreamMode.Write) - AES256CSP_Temporal_Sender_Stream_Synchronized = IO.Stream.Synchronized(AES256CSP_Temporal_Sender_Stream) - - AES256CSP_Temporal_Receiver_EncryptionGenerator = New FastRNG( - {AES256CSP_Temporal_Receiver_Timestamp.Year, - AES256CSP_Temporal_Receiver_Timestamp.Month, - AES256CSP_Temporal_Receiver_Timestamp.Day, - AES256CSP_Temporal_Receiver_Timestamp.Hour, - AES256CSP_Temporal_Receiver_Timestamp.Minute, - AES256CSP_Temporal_Receiver_Timestamp.Second, - AES256CSP_Temporal_Receiver_Timestamp.Millisecond, - TCP_LocalEndpoint.Port}) - AES256CSP_Temporal_Receiver_EncryptionGenerator.GetRNGBytes(AES256CSP_Temporal_Receiver_Key) - AES256CSP_Temporal_Receiver_EncryptionGenerator.GetRNGBytes(AES256CSP_Temporal_Receiver_IV) - AES256CSP_Temporal_Receiver = New Security.Cryptography.AesCryptoServiceProvider With { - .Key = AES256CSP_Temporal_Receiver_Key, - .IV = AES256CSP_Temporal_Receiver_IV, - .Padding = Security.Cryptography.PaddingMode.None} - AES256CSP_Temporal_Receiver_Transform = AES256CSP_Temporal_Receiver.CreateDecryptor - AES256CSP_Temporal_Receiver_Stream = New Security.Cryptography.CryptoStream( - AES256CSP_Temporal_BaseStream, - AES256CSP_Temporal_Receiver_Transform, - Security.Cryptography.CryptoStreamMode.Read) - AES256CSP_Temporal_Receiver_Stream_Synchronized = IO.Stream.Synchronized(AES256CSP_Temporal_Receiver_Stream) - - AES256CSP_Temporal_Blocksize = CInt(AES256CSP_Temporal_Receiver.BlockSize / 8) - - - TCP_Connected = True - Dim SenderThread As New Threading.Thread(AddressOf SenderThreadMethod) - Dim ReceiverThread As New Threading.Thread(AddressOf ReceiverThreadMethod) - SenderThread.Start() - ReceiverThread.Start() - End Sub - Private Sub SenderThreadMethod() - Dim ThreadGovernor As New Governors.LoopGovernor(3) - Do While Connected = True - ThreadGovernor.LoopsPerSecond = TCP_Dynamic_Speed_Sender_Current_Speed - SyncLock Channel_Sender_Synclock_Object - For Each Item In Channels - If Item.Value.Active = True Then - If Item.Value.Writebuffer.Length > 0 Then - Dim Data(CInt(Item.Value.Writebuffer.Length) - 1) As Byte - Dim StreamBuffer(Data.Length + 11) As Byte - Dim Code As Int32 = 0 - Dim Channel As Int32 = Item.Key - - Item.Value.Writebuffer.Read(Data, 0, Data.Length) - - Int32BlockCopyIn(Code, StreamBuffer, 0) - Int32BlockCopyIn(Channel, StreamBuffer, 4) - Int32BlockCopyIn(Data.Length, StreamBuffer, 8) - Buffer.BlockCopy(Data, 0, StreamBuffer, 12, Data.Length) - SendBlock(StreamBuffer) - End If - End If - TCP_Dynamic_Speed_Sender_Do_Increase = True - Next - End SyncLock - If TCP_Dynamic_Speed_Sender_Do_Increase = True Then - If TCP_Dynamic_Speed_Sender_Current_Speed < TCP_Dynamic_Speed_Maximum Then TCP_Dynamic_Speed_Sender_Current_Speed += TCP_Dynamic_Speed_Increment - If TCP_Dynamic_Speed_Sender_Current_Speed > TCP_Dynamic_Speed_Maximum Then TCP_Dynamic_Speed_Sender_Current_Speed = TCP_Dynamic_Speed_Maximum - Else - If TCP_Dynamic_Speed_Sender_Current_Speed > TCP_Dynamic_Speed_Minimum Then TCP_Dynamic_Speed_Sender_Current_Speed -= TCP_Dynamic_Speed_Decrement - If TCP_Dynamic_Speed_Sender_Current_Speed < TCP_Dynamic_Speed_Minimum Then TCP_Dynamic_Speed_Sender_Current_Speed = TCP_Dynamic_Speed_Minimum - End If - TCP_Dynamic_Speed_Sender_Do_Increase = False - ThreadGovernor.Limit() - Loop - End Sub - Private Sub ReceiverThreadMethod() - Dim ThreadGovernor As New Governors.LoopGovernor(3) - Do While Connected = True - ThreadGovernor.LoopsPerSecond = TCP_Dynamic_Speed_Receiver_Current_Speed - If MyBase.Available > 0 Then - SyncLock Channel_Receiver_Synclock_Object - Dim StreamBuffer As Byte() = Nothing - ReceiveBlock(StreamBuffer) - Dim Code As Int32 = Int32BlockCopyOut(StreamBuffer, 0) - - Select Case Code - Case 0 - Dim Channel As Int32 = Int32BlockCopyOut(StreamBuffer, 4) - Dim Length As Int32 = Int32BlockCopyOut(StreamBuffer, 8) - Dim Data(Length - 1) As Byte - Buffer.BlockCopy(StreamBuffer, 12, Data, 0, Length) - If Channels.ContainsKey(Channel) = True Then - If Channels(Channel).Active = True Then - Channels(Channel).Readbuffer.Write(Data, 0, Data.Length) - End If - End If - End Select - - End SyncLock - TCP_Dynamic_Speed_Receiver_Do_Increase = True - End If - If TCP_Dynamic_Speed_Receiver_Do_Increase = True Then - If TCP_Dynamic_Speed_Receiver_Current_Speed < TCP_Dynamic_Speed_Maximum Then TCP_Dynamic_Speed_Receiver_Current_Speed += TCP_Dynamic_Speed_Increment - If TCP_Dynamic_Speed_Receiver_Current_Speed > TCP_Dynamic_Speed_Maximum Then TCP_Dynamic_Speed_Receiver_Current_Speed = TCP_Dynamic_Speed_Maximum - Else - If TCP_Dynamic_Speed_Receiver_Current_Speed > TCP_Dynamic_Speed_Minimum Then TCP_Dynamic_Speed_Receiver_Current_Speed -= TCP_Dynamic_Speed_Decrement - If TCP_Dynamic_Speed_Receiver_Current_Speed < TCP_Dynamic_Speed_Minimum Then TCP_Dynamic_Speed_Receiver_Current_Speed = TCP_Dynamic_Speed_Minimum - End If - TCP_Dynamic_Speed_Receiver_Do_Increase = False - ThreadGovernor.Limit() - Loop - End Sub - Private Sub SendBlock(ByRef Data As Byte(), Optional ByVal BlockSize As Int32 = 0, Optional ByVal Stream As IO.Stream = Nothing) - SyncLock Block_Sender_Synclock_Object - If BlockSize = 0 Then BlockSize = AES256CSP_Temporal_Blocksize - If Stream Is Nothing Then Stream = AES256CSP_Temporal_Sender_Stream_Synchronized - If Data Is Nothing Then Return - - Dim Header(15) As Byte - Dim DataLength As Int32 = Data.Length - Dim BlockLength As Int32 = CInt(Math.Ceiling(DataLength / BlockSize)) * BlockSize - Int32BlockCopyIn(DataLength, Header, 0) - Int32BlockCopyIn(BlockLength, Header, 4) - Try - Stream.Write(Header, 0, 16) - - Dim Padded(BlockLength - 1) As Byte - Buffer.BlockCopy(Data, 0, Padded, 0, DataLength) - - Stream.Write(Padded, 0, BlockLength) - Stream.Flush() - Catch ex As Exception - TCP_Connected = False - End Try - End SyncLock - End Sub - Private Sub ReceiveBlock(ByRef Data As Byte(), Optional ByVal Stream As IO.Stream = Nothing) - SyncLock Block_Receiver_Synclock_Object - If Stream Is Nothing Then Stream = AES256CSP_Temporal_Receiver_Stream_Synchronized - Do Until Client.Available>=16 - Threading.Thread.Sleep(10) - Loop - Dim Header(15) As Byte - Stream.Read(Header, 0, 16) - Dim DataLength As Int32 = Int32BlockCopyOut(Header, 0) - Dim BlockLength As Int32 = Int32BlockCopyOut(Header, 4) - Do Until Client.Available>=BlockLength - Threading.Thread.Sleep(10) - Loop - ReDim Data(DataLength - 1) - Dim Padded(BlockLength - 1) As Byte - Stream.Read(Padded, 0, BlockLength) - Buffer.BlockCopy(Padded, 0, Data, 0, DataLength) - End SyncLock - End Sub - Private Sub Int32BlockCopyIn(ByRef Source As Int32, ByRef Destination As Byte(), ByVal Offset As Int32) - Dim SourceBytes As Byte() = BitConverter.GetBytes(Source) - Buffer.BlockCopy(SourceBytes, 0, Destination, Offset, 4) - End Sub - Private Function Int32BlockCopyOut(ByRef Source As Byte(), ByVal Offset As Int32, Optional ByRef Destination As Int32 = Nothing) As Int32 - Dim DestinationBytes(3) As Byte - Buffer.BlockCopy(Source, Offset, DestinationBytes, 0, 4) - Destination = BitConverter.ToInt32(DestinationBytes, 0) - Return Destination - End Function -End Class \ No newline at end of file diff --git a/Networking/bin/Debug/netstandard2.0/Microsoft.VisualBasic.dll b/Networking/bin/Debug/netstandard2.0/Microsoft.VisualBasic.dll deleted file mode 100755 index 8bd7747c1812825b3af2e19865e9c181489ee101..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68096 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 P{xxpO8&&_m?}7gVRPx_A diff --git a/Networking/obj/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.vb b/Networking/obj/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.vb deleted file mode 100644 index 0488836..0000000 --- a/Networking/obj/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.vb +++ /dev/null @@ -1,7 +0,0 @@ -' - Option Strict Off - Option Explicit On - - Imports System - Imports System.Reflection - diff --git a/Networking/obj/Debug/netstandard2.0/Networking.assets.cache b/Networking/obj/Debug/netstandard2.0/Networking.assets.cache deleted file mode 100644 index cc331ec70dddc378c6e168ed9b8293617dc8a11c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmWIWc6a1rU|_JHFI66_Eji&vX)ph@*^2A$2TneC<@23ox8$GXCRhsT90IDr2bh48 z(!QC=Mft_~X(f7ot|89(MX7oLIf*4{`9- - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - /home/demon4hire/.nuget/packages/ - /home/demon4hire/.nuget/packages/ - PackageReference - 5.10.0 - - - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - \ No newline at end of file diff --git a/Networking/obj/Networking.vbproj.nuget.g.targets b/Networking/obj/Networking.vbproj.nuget.g.targets deleted file mode 100644 index 0ba3e8c..0000000 --- a/Networking/obj/Networking.vbproj.nuget.g.targets +++ /dev/null @@ -1,9 +0,0 @@ - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - - - \ No newline at end of file diff --git a/Networking/obj/project.assets.json b/Networking/obj/project.assets.json deleted file mode 100644 index 2f845a5..0000000 --- a/Networking/obj/project.assets.json +++ /dev/null @@ -1,240 +0,0 @@ -{ - "version": 3, - "targets": { - ".NETStandard,Version=v2.0": { - "Microsoft.NETCore.Platforms/1.1.0": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "NETStandard.Library/2.0.3": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - }, - "build": { - "build/netstandard2.0/NETStandard.Library.targets": {} - } - } - } - }, - "libraries": { - "Microsoft.NETCore.Platforms/1.1.0": { - "sha512": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", - "type": "package", - "path": "microsoft.netcore.platforms/1.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "microsoft.netcore.platforms.1.1.0.nupkg.sha512", - "microsoft.netcore.platforms.nuspec", - "runtime.json" - ] - }, - "NETStandard.Library/2.0.3": { - "sha512": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", - "type": "package", - "path": "netstandard.library/2.0.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "build/netstandard2.0/NETStandard.Library.targets", - "build/netstandard2.0/ref/Microsoft.Win32.Primitives.dll", - "build/netstandard2.0/ref/System.AppContext.dll", - "build/netstandard2.0/ref/System.Collections.Concurrent.dll", - "build/netstandard2.0/ref/System.Collections.NonGeneric.dll", - "build/netstandard2.0/ref/System.Collections.Specialized.dll", - "build/netstandard2.0/ref/System.Collections.dll", - "build/netstandard2.0/ref/System.ComponentModel.Composition.dll", - "build/netstandard2.0/ref/System.ComponentModel.EventBasedAsync.dll", - "build/netstandard2.0/ref/System.ComponentModel.Primitives.dll", - "build/netstandard2.0/ref/System.ComponentModel.TypeConverter.dll", - "build/netstandard2.0/ref/System.ComponentModel.dll", - "build/netstandard2.0/ref/System.Console.dll", - "build/netstandard2.0/ref/System.Core.dll", - "build/netstandard2.0/ref/System.Data.Common.dll", - "build/netstandard2.0/ref/System.Data.dll", - "build/netstandard2.0/ref/System.Diagnostics.Contracts.dll", - "build/netstandard2.0/ref/System.Diagnostics.Debug.dll", - "build/netstandard2.0/ref/System.Diagnostics.FileVersionInfo.dll", - "build/netstandard2.0/ref/System.Diagnostics.Process.dll", - "build/netstandard2.0/ref/System.Diagnostics.StackTrace.dll", - "build/netstandard2.0/ref/System.Diagnostics.TextWriterTraceListener.dll", - "build/netstandard2.0/ref/System.Diagnostics.Tools.dll", - "build/netstandard2.0/ref/System.Diagnostics.TraceSource.dll", - "build/netstandard2.0/ref/System.Diagnostics.Tracing.dll", - "build/netstandard2.0/ref/System.Drawing.Primitives.dll", - "build/netstandard2.0/ref/System.Drawing.dll", - "build/netstandard2.0/ref/System.Dynamic.Runtime.dll", - "build/netstandard2.0/ref/System.Globalization.Calendars.dll", - "build/netstandard2.0/ref/System.Globalization.Extensions.dll", - "build/netstandard2.0/ref/System.Globalization.dll", - "build/netstandard2.0/ref/System.IO.Compression.FileSystem.dll", - "build/netstandard2.0/ref/System.IO.Compression.ZipFile.dll", - "build/netstandard2.0/ref/System.IO.Compression.dll", - "build/netstandard2.0/ref/System.IO.FileSystem.DriveInfo.dll", - "build/netstandard2.0/ref/System.IO.FileSystem.Primitives.dll", - "build/netstandard2.0/ref/System.IO.FileSystem.Watcher.dll", - "build/netstandard2.0/ref/System.IO.FileSystem.dll", - "build/netstandard2.0/ref/System.IO.IsolatedStorage.dll", - "build/netstandard2.0/ref/System.IO.MemoryMappedFiles.dll", - "build/netstandard2.0/ref/System.IO.Pipes.dll", - "build/netstandard2.0/ref/System.IO.UnmanagedMemoryStream.dll", - "build/netstandard2.0/ref/System.IO.dll", - "build/netstandard2.0/ref/System.Linq.Expressions.dll", - "build/netstandard2.0/ref/System.Linq.Parallel.dll", - "build/netstandard2.0/ref/System.Linq.Queryable.dll", - "build/netstandard2.0/ref/System.Linq.dll", - "build/netstandard2.0/ref/System.Net.Http.dll", - "build/netstandard2.0/ref/System.Net.NameResolution.dll", - "build/netstandard2.0/ref/System.Net.NetworkInformation.dll", - "build/netstandard2.0/ref/System.Net.Ping.dll", - "build/netstandard2.0/ref/System.Net.Primitives.dll", - "build/netstandard2.0/ref/System.Net.Requests.dll", - "build/netstandard2.0/ref/System.Net.Security.dll", - "build/netstandard2.0/ref/System.Net.Sockets.dll", - "build/netstandard2.0/ref/System.Net.WebHeaderCollection.dll", - "build/netstandard2.0/ref/System.Net.WebSockets.Client.dll", - "build/netstandard2.0/ref/System.Net.WebSockets.dll", - "build/netstandard2.0/ref/System.Net.dll", - "build/netstandard2.0/ref/System.Numerics.dll", - "build/netstandard2.0/ref/System.ObjectModel.dll", - "build/netstandard2.0/ref/System.Reflection.Extensions.dll", - "build/netstandard2.0/ref/System.Reflection.Primitives.dll", - "build/netstandard2.0/ref/System.Reflection.dll", - "build/netstandard2.0/ref/System.Resources.Reader.dll", - "build/netstandard2.0/ref/System.Resources.ResourceManager.dll", - "build/netstandard2.0/ref/System.Resources.Writer.dll", - "build/netstandard2.0/ref/System.Runtime.CompilerServices.VisualC.dll", - "build/netstandard2.0/ref/System.Runtime.Extensions.dll", - "build/netstandard2.0/ref/System.Runtime.Handles.dll", - "build/netstandard2.0/ref/System.Runtime.InteropServices.RuntimeInformation.dll", - "build/netstandard2.0/ref/System.Runtime.InteropServices.dll", - "build/netstandard2.0/ref/System.Runtime.Numerics.dll", - "build/netstandard2.0/ref/System.Runtime.Serialization.Formatters.dll", - "build/netstandard2.0/ref/System.Runtime.Serialization.Json.dll", - "build/netstandard2.0/ref/System.Runtime.Serialization.Primitives.dll", - "build/netstandard2.0/ref/System.Runtime.Serialization.Xml.dll", - "build/netstandard2.0/ref/System.Runtime.Serialization.dll", - "build/netstandard2.0/ref/System.Runtime.dll", - "build/netstandard2.0/ref/System.Security.Claims.dll", - "build/netstandard2.0/ref/System.Security.Cryptography.Algorithms.dll", - "build/netstandard2.0/ref/System.Security.Cryptography.Csp.dll", - "build/netstandard2.0/ref/System.Security.Cryptography.Encoding.dll", - "build/netstandard2.0/ref/System.Security.Cryptography.Primitives.dll", - "build/netstandard2.0/ref/System.Security.Cryptography.X509Certificates.dll", - "build/netstandard2.0/ref/System.Security.Principal.dll", - "build/netstandard2.0/ref/System.Security.SecureString.dll", - "build/netstandard2.0/ref/System.ServiceModel.Web.dll", - "build/netstandard2.0/ref/System.Text.Encoding.Extensions.dll", - "build/netstandard2.0/ref/System.Text.Encoding.dll", - "build/netstandard2.0/ref/System.Text.RegularExpressions.dll", - "build/netstandard2.0/ref/System.Threading.Overlapped.dll", - "build/netstandard2.0/ref/System.Threading.Tasks.Parallel.dll", - "build/netstandard2.0/ref/System.Threading.Tasks.dll", - "build/netstandard2.0/ref/System.Threading.Thread.dll", - "build/netstandard2.0/ref/System.Threading.ThreadPool.dll", - "build/netstandard2.0/ref/System.Threading.Timer.dll", - "build/netstandard2.0/ref/System.Threading.dll", - "build/netstandard2.0/ref/System.Transactions.dll", - "build/netstandard2.0/ref/System.ValueTuple.dll", - "build/netstandard2.0/ref/System.Web.dll", - "build/netstandard2.0/ref/System.Windows.dll", - "build/netstandard2.0/ref/System.Xml.Linq.dll", - "build/netstandard2.0/ref/System.Xml.ReaderWriter.dll", - "build/netstandard2.0/ref/System.Xml.Serialization.dll", - "build/netstandard2.0/ref/System.Xml.XDocument.dll", - "build/netstandard2.0/ref/System.Xml.XPath.XDocument.dll", - "build/netstandard2.0/ref/System.Xml.XPath.dll", - "build/netstandard2.0/ref/System.Xml.XmlDocument.dll", - "build/netstandard2.0/ref/System.Xml.XmlSerializer.dll", - "build/netstandard2.0/ref/System.Xml.dll", - "build/netstandard2.0/ref/System.dll", - "build/netstandard2.0/ref/mscorlib.dll", - "build/netstandard2.0/ref/netstandard.dll", - "build/netstandard2.0/ref/netstandard.xml", - "lib/netstandard1.0/_._", - "netstandard.library.2.0.3.nupkg.sha512", - "netstandard.library.nuspec" - ] - } - }, - "projectFileDependencyGroups": { - ".NETStandard,Version=v2.0": [ - "NETStandard.Library >= 2.0.3" - ] - }, - "packageFolders": { - "/home/demon4hire/.nuget/packages/": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "/home/demon4hire/RiderProjects/Networking/Networking/Networking.vbproj", - "projectName": "Networking", - "projectPath": "/home/demon4hire/RiderProjects/Networking/Networking/Networking.vbproj", - "packagesPath": "/home/demon4hire/.nuget/packages/", - "outputPath": "/home/demon4hire/RiderProjects/Networking/Networking/obj/", - "projectStyle": "PackageReference", - "configFilePaths": [ - "/home/demon4hire/.nuget/NuGet/NuGet.Config" - ], - "originalTargetFrameworks": [ - "netstandard2.0" - ], - "sources": { - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - } - }, - "frameworks": { - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "dependencies": { - "NETStandard.Library": { - "suppressParent": "All", - "target": "Package", - "version": "[2.0.3, )", - "autoReferenced": true - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48" - ], - "assetTargetFallback": true, - "warn": true, - "runtimeIdentifierGraphPath": "/usr/lib/mono/msbuild/Current/bin/RuntimeIdentifierGraph.json" - } - } - } -} \ No newline at end of file diff --git a/Networking/obj/project.nuget.cache b/Networking/obj/project.nuget.cache deleted file mode 100644 index 15c0263..0000000 --- a/Networking/obj/project.nuget.cache +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": 2, - "dgSpecHash": "L6P611G/POxQvsakzafozHH8IkTaFpHkT8MLyyXP7maoxWQPnVbXOPo7VRSz+HtXZrL4GHn5VY0GjuYfwMu7tQ==", - "success": true, - "projectFilePath": "/home/demon4hire/RiderProjects/Networking/Networking/Networking.vbproj", - "expectedPackageFiles": [ - "/home/demon4hire/.nuget/packages/microsoft.netcore.platforms/1.1.0/microsoft.netcore.platforms.1.1.0.nupkg.sha512", - "/home/demon4hire/.nuget/packages/netstandard.library/2.0.3/netstandard.library.2.0.3.nupkg.sha512" - ], - "logs": [] -} \ No newline at end of file diff --git a/Networking/obj/project.packagespec.json b/Networking/obj/project.packagespec.json deleted file mode 100644 index 0645d47..0000000 --- a/Networking/obj/project.packagespec.json +++ /dev/null @@ -1 +0,0 @@ -"restore":{"projectUniqueName":"/home/demon4hire/RiderProjects/Networking/Networking/Networking.vbproj","projectName":"Networking","projectPath":"/home/demon4hire/RiderProjects/Networking/Networking/Networking.vbproj","outputPath":"/home/demon4hire/RiderProjects/Networking/Networking/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["netstandard2.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"netstandard2.0":{"targetAlias":"netstandard2.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"netstandard2.0":{"targetAlias":"netstandard2.0","dependencies":{"NETStandard.Library":{"suppressParent":"All","target":"Package","version":"[2.0.3, )","autoReferenced":true}},"imports":["net461","net462","net47","net471","net472","net48"],"assetTargetFallback":true,"warn":true,"runtimeIdentifierGraphPath":"/usr/lib/mono/msbuild/Current/bin/RuntimeIdentifierGraph.json"}} \ No newline at end of file diff --git a/Networking/obj/rider.project.restore.info b/Networking/obj/rider.project.restore.info deleted file mode 100644 index c12cb4d..0000000 --- a/Networking/obj/rider.project.restore.info +++ /dev/null @@ -1 +0,0 @@ -16287389760947893 \ No newline at end of file diff --git a/NetworkingTester/MainForm.vb b/NetworkingTester/MainForm.vb deleted file mode 100644 index abf77bd..0000000 --- a/NetworkingTester/MainForm.vb +++ /dev/null @@ -1,162 +0,0 @@ -Imports System.Drawing -Imports System.Windows.Forms -Friend Module Loader - Public Sub Main(Args As String()) - Dim NF As New MainForm - Application.Run(NF) - End sub -End Module - -Friend Class MainForm - Inherits Form - - Private WithEvents LBServerAddress As Label - Private WithEvents LBServerPort As Label - Private WithEvents TXServerAddress As TextBox - Private WithEvents TXServerPort As TextBox - Private WithEvents BTStartServer as button - Private WithEvents BTStopServer As Button - - Private WithEvents LBClientAddress As Label - Private WithEvents LBClientPort As Label - Private WithEvents TXClientAddress As TextBox - Private WithEvents TXClientPort As TextBox - Private WithEvents BTConnectClient As Button - Private WithEvents BTDisconnectClient As Button - Private WithEvents BTMessageTest As Button - Private WithEvents BTBeginEnduranceIntegrityTest As Button - Private WithEvents BTEndEnduranceIntegrityTest As Button - - Private ReadOnly Client As New ClientServerTestLib.TestClient - Private ReadOnly Server As New ClientServerTestLib.TestServer - - - - Friend Sub New() - SuspendLayout() - Size = New Size(440,256) - Text = "Networking library tester" - MaximumSize = Size - - LBServerAddress = New Label With { - .Location = New Point(1,3), - .Size = New Size(100,24), - .Text = "Server address:"} - - TXServerAddress = New TextBox With { - .Location = New Point(101,1), - .Size = New Size(100,24), - .Text = "127.0.0.1"} - - LBServerPort = New Label With { - .Location = New Point(1,28), - .Size = New Size(100,24), - .Text = "Server port:"} - - TXServerPort = New TextBox With { - .Location = New Point(101,26), - .Size = New Size(100,24), - .Text = "443"} - - BTStartServer = new button With { - .Location = New Point(1,52), - .Size = New Size(100,24), - .Text = "Start server"} - - BTStopServer = new button With { - .Location = New Point(102,52), - .Size = New Size(100,24), - .Text = "Stop server"} - - LBClientAddress = new Label With { - .Location = New Point(230,3), - .Size = New Size(100,24), - .Text = "Client address:"} - - TXClientAddress = New TextBox With { - .Location = New Point(330,1), - .Size = New Size(100,24), - .Text = "127.0.0.1"} - - LBClientPort = new Label With { - .Location = New Point(230,28), - .Size = New Size(100,24), - .Text = "Client port:"} - - TXClientPort = new TextBox With { - .Location = New Point(330,26), - .Size = New Size(100,24), - .Text = "443"} - - BTConnectClient = new button With { - .Location = New Point(230,52), - .Size = New Size(100,24), - .Text = "Start client"} - - BTDisconnectClient = new button With { - .Location = New Point(331,52), - .Size = New Size(100,24), - .Text = "Stop client"} - - BTMessageTest = New Button With { - .Location = New Point(230,77), - .Size = New Size(201,24), - .Text = "Send test message"} - - BTBeginEnduranceIntegrityTest = New Button With { - .Location = New Point(230,102), - .Size = New Size(201,24), - .Text = "Begin connection integrity test"} - - BTEndEnduranceIntegrityTest = New Button With { - .Location = New Point(230,127), - .Size = New Size(201,24), - .Text = "End connection integrity test"} - - Controls.Add(LBServerAddress) - Controls.Add(TXServerAddress) - Controls.Add(LBServerPort) - Controls.Add(TXServerPort) - Controls.Add(BTStartServer) - Controls.Add(BTStopServer) - Controls.Add(LBClientAddress) - Controls.Add(TXClientAddress) - Controls.Add(LBClientPort) - Controls.Add(TXClientPort) - Controls.Add(BTConnectClient) - Controls.Add(BTDisconnectClient) - Controls.Add(BTMessageTest) - Controls.Add(BTBeginEnduranceIntegrityTest) - Controls.Add(BTEndEnduranceIntegrityTest) - ResumeLayout() - End Sub - - Private Sub EVStartServer() Handles BTStartServer.Click - Dim Endpoint As New Net.IPEndPoint(net.IPAddress.Parse(TXServerAddress.Text),Convert.ToInt32(TXServerPort.Text)) - Server.Start(Endpoint) - End sub - - Private Sub EVStopServer() Handles BTStopServer.Click - Server.Stop() - End Sub - - Private Sub EVConnectClient() Handles BTConnectClient.Click - Dim Endpoint As New Net.IPEndPoint(net.IPAddress.Parse(TXClientAddress.Text),Convert.ToInt32(TXClientPort.Text)) - Client.Connect(Endpoint) - End Sub - - Private Sub EVDisconnectClient() Handles BTDisconnectClient.Click - Client.Disconnect() - End Sub - - Private Sub EVSendTestMessage() Handles BTMessageTest.Click - Console.WriteLine(Client.CommandTest()) - End Sub - - Private sub EVBeginIntegrityTest() Handles BTBeginEnduranceIntegrityTest.Click - Console.WriteLine(Client.IntegrityTestBegin()) - End sub - Private sub EVEndIntegrityTest() Handles BTEndEnduranceIntegrityTest.Click - Console.WriteLine(Client.IntegrityTestEnd()) - End sub -End Class \ No newline at end of file diff --git a/NetworkingTester/My Project/Application.Designer.vb b/NetworkingTester/My Project/Application.Designer.vb deleted file mode 100644 index 1bb18cd..0000000 --- a/NetworkingTester/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' 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 - diff --git a/NetworkingTester/My Project/Application.myapp b/NetworkingTester/My Project/Application.myapp deleted file mode 100644 index 758895d..0000000 --- a/NetworkingTester/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 1 - true - diff --git a/NetworkingTester/My Project/AssemblyInfo.vb b/NetworkingTester/My Project/AssemblyInfo.vb deleted file mode 100644 index 3e7ae74..0000000 --- a/NetworkingTester/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -'Imports System -'Imports System.Reflection -'Imports System.Runtime.InteropServices -' -'' General Information about an assembly is controlled through the following -'' set of attributes. Change these attribute values to modify the information -'' associated with an assembly. -' -'' Review the values of the assembly attributes -' -' -' -' -' -' -' -' -' -' -''The following GUID is for the ID of the typelib if this project is exposed to COM -' -' -'' Version information for an assembly consists of the following four values: -'' -'' Major Version -'' Minor Version -'' Build Number -'' Revision -'' -'' You can specify all the values or you can default the Build and Revision Numbers -'' by using the '*' as shown below: -'' -' -' -' diff --git a/NetworkingTester/NetworkingTester.vbproj b/NetworkingTester/NetworkingTester.vbproj deleted file mode 100644 index 208c9b3..0000000 --- a/NetworkingTester/NetworkingTester.vbproj +++ /dev/null @@ -1,86 +0,0 @@ - - - - - Debug - AnyCPU - {B1233C93-1146-4A6D-8364-AD8389887B38} - WinExe - NetworkingTester - NetworkingTester - 512 - Windows - v4.8 - - - true - full - true - true - bin\Debug\ - NetworkingTester.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - false - - - pdbonly - false - true - true - bin\Release\ - NetworkingTester.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - false - - - On - - - Binary - - - On - - - Off - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {13fb1cfc-b3b1-4148-bc59-76d64a65109e} - ClientServerTestLib - - - {91c0ba12-850b-4854-92f2-7590d859833f} - Networking - - - - \ No newline at end of file diff --git a/NetworkingTester/obj/Debug/.NETFramework,Version=v4.6.1.AssemblyAttributes.vb b/NetworkingTester/obj/Debug/.NETFramework,Version=v4.6.1.AssemblyAttributes.vb deleted file mode 100644 index 0e292ac..0000000 --- a/NetworkingTester/obj/Debug/.NETFramework,Version=v4.6.1.AssemblyAttributes.vb +++ /dev/null @@ -1,7 +0,0 @@ -' - Option Strict Off - Option Explicit On - - Imports System - Imports System.Reflection - diff --git a/NetworkingTester/obj/Debug/.NETFramework,Version=v4.6.2.AssemblyAttributes.vb b/NetworkingTester/obj/Debug/.NETFramework,Version=v4.6.2.AssemblyAttributes.vb deleted file mode 100644 index 41549fd..0000000 --- a/NetworkingTester/obj/Debug/.NETFramework,Version=v4.6.2.AssemblyAttributes.vb +++ /dev/null @@ -1,7 +0,0 @@ -' - Option Strict Off - Option Explicit On - - Imports System - Imports System.Reflection - diff --git a/NetworkingTester/obj/Debug/.NETFramework,Version=v4.7.1.AssemblyAttributes.vb b/NetworkingTester/obj/Debug/.NETFramework,Version=v4.7.1.AssemblyAttributes.vb deleted file mode 100644 index 5815c27..0000000 --- a/NetworkingTester/obj/Debug/.NETFramework,Version=v4.7.1.AssemblyAttributes.vb +++ /dev/null @@ -1,7 +0,0 @@ -' - Option Strict Off - Option Explicit On - - Imports System - Imports System.Reflection - diff --git a/NetworkingTester/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb b/NetworkingTester/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb deleted file mode 100644 index e7dcac5..0000000 --- a/NetworkingTester/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb +++ /dev/null @@ -1,7 +0,0 @@ -' - Option Strict Off - Option Explicit On - - Imports System - Imports System.Reflection - diff --git a/NetworkingTester/obj/Debug/NetworkingTester.vbproj.FileListAbsolute.txt b/NetworkingTester/obj/Debug/NetworkingTester.vbproj.FileListAbsolute.txt deleted file mode 100644 index e69de29..0000000