feat(server): implement LiteNetLib server networking logic
feat(client) fix NetworkClint send data.
This commit is contained in:
parent
ab729d1a2f
commit
32b4335d48
24 changed files with 169 additions and 13 deletions
|
|
@ -38,6 +38,11 @@ namespace _Hub.Scripts.Network
|
||||||
Init();
|
Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
_netManager.PollEvents();
|
||||||
|
}
|
||||||
|
|
||||||
private void Init()
|
private void Init()
|
||||||
{
|
{
|
||||||
_netManager = new NetManager(this)
|
_netManager = new NetManager(this)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,69 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.Text;
|
||||||
|
using LiteNetLib;
|
||||||
|
|
||||||
|
namespace Playvoi.Server;
|
||||||
|
|
||||||
|
public class NetworkServer : INetEventListener
|
||||||
|
{
|
||||||
|
private NetManager _netManager;
|
||||||
|
private Dictionary<int, NetPeer> _connections;
|
||||||
|
public void Start()
|
||||||
|
{
|
||||||
|
_connections = new Dictionary<int, NetPeer>();
|
||||||
|
_netManager = new NetManager(this)
|
||||||
|
{
|
||||||
|
DisconnectTimeout = 10000
|
||||||
|
};
|
||||||
|
_netManager.Start(9050);
|
||||||
|
Console.WriteLine("Server listening on port 9050");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PoolEvents()
|
||||||
|
{
|
||||||
|
_netManager.PollEvents();
|
||||||
|
}
|
||||||
|
public void OnNetworkReceive(NetPeer peer, NetPacketReader reader, byte channelNumber, DeliveryMethod deliveryMethod)
|
||||||
|
{
|
||||||
|
var data = Encoding.UTF8.GetString(reader.RawData);
|
||||||
|
Console.WriteLine($"Data received from client : {data}");
|
||||||
|
|
||||||
|
var replay = "Ehm Replay";
|
||||||
|
var bytes = Encoding.UTF8.GetBytes(replay);
|
||||||
|
peer.Send(bytes, DeliveryMethod.ReliableOrdered);
|
||||||
|
}
|
||||||
|
public void OnPeerConnected(NetPeer peer)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Client connected:{peer.Id}:{peer.Address}:{peer.Port}");
|
||||||
|
_connections.Add(peer.Id, peer);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPeerDisconnected(NetPeer peer, DisconnectInfo disconnectInfo)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Client disconnected:{peer.Id}:{peer.Address}:{peer.Port}");
|
||||||
|
_connections.Remove(peer.Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnConnectionRequest(ConnectionRequest request)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Incoming connection from {request.RemoteEndPoint}");
|
||||||
|
request.Accept();
|
||||||
|
}
|
||||||
|
public void OnNetworkError(IPEndPoint endPoint, SocketError socketError)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnNetworkReceiveUnconnected(IPEndPoint remoteEndPoint, NetPacketReader reader, UnconnectedMessageType messageType)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnNetworkLatencyUpdate(NetPeer peer, int latency)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,10 @@
|
||||||
// See https://aka.ms/new-console-template for more information
|
using System.Threading;
|
||||||
|
using Playvoi.Server;
|
||||||
|
|
||||||
Console.WriteLine("Hello, World!");
|
var server = new NetworkServer();
|
||||||
|
server.Start();
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
server.PoolEvents();
|
||||||
|
Thread.Sleep(15);
|
||||||
|
}
|
||||||
Binary file not shown.
|
|
@ -7,9 +7,20 @@
|
||||||
"targets": {
|
"targets": {
|
||||||
".NETCoreApp,Version=v9.0": {
|
".NETCoreApp,Version=v9.0": {
|
||||||
"Playvoi.Server/1.0.0": {
|
"Playvoi.Server/1.0.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"LiteNetLib": "1.3.5"
|
||||||
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"Playvoi.Server.dll": {}
|
"Playvoi.Server.dll": {}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LiteNetLib/1.3.5": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/LiteNetLib.dll": {
|
||||||
|
"assemblyVersion": "1.3.5.0",
|
||||||
|
"fileVersion": "1.3.5.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -18,6 +29,13 @@
|
||||||
"type": "project",
|
"type": "project",
|
||||||
"serviceable": false,
|
"serviceable": false,
|
||||||
"sha512": ""
|
"sha512": ""
|
||||||
|
},
|
||||||
|
"LiteNetLib/1.3.5": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-WKJEIdQfLDWFEzdKpLZzwB9Umci/2TWxX6ZZnZHhbJ4Z0c1eccS2pZpgUFcHtEnrUY+H1vOFqxzOrgoQpG6unQ==",
|
||||||
|
"path": "litenetlib/1.3.5",
|
||||||
|
"hashPath": "litenetlib.1.3.5.nupkg.sha512"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -49,6 +49,12 @@
|
||||||
"frameworks": {
|
"frameworks": {
|
||||||
"net9.0": {
|
"net9.0": {
|
||||||
"targetAlias": "net9.0",
|
"targetAlias": "net9.0",
|
||||||
|
"dependencies": {
|
||||||
|
"LiteNetLib": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[1.3.5, )"
|
||||||
|
}
|
||||||
|
},
|
||||||
"imports": [
|
"imports": [
|
||||||
"net461",
|
"net461",
|
||||||
"net462",
|
"net462",
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ using System.Reflection;
|
||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Playvoi.Server")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Playvoi.Server")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e64fe2b019e506ee491203653ffa81266029fbfd")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ab729d1a2f9f4195576893a393b5d11c62f69313")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("Playvoi.Server")]
|
[assembly: System.Reflection.AssemblyProductAttribute("Playvoi.Server")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("Playvoi.Server")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("Playvoi.Server")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
ac3dd1099f6eda8add1823c62e3c8f4e63611a380378da5ac3d5bfeccd59b449
|
98eff605502050ea012292e318729166e39cf9aa8ce58a266dabc44ef5c20548
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -1 +1 @@
|
||||||
a042ed99ee8c62f56d1c8b68b4eacb26e3316b830706eec35546f743cc1aacc3
|
93e5d40e9fa299613996065e17f6cd85fbad4a2f79a5140baa0b18e860f4e6fa
|
||||||
|
|
|
||||||
|
|
@ -12,3 +12,6 @@ F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\obj
|
||||||
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\obj\Release\net9.0\Playvoi.Server.pdb
|
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\obj\Release\net9.0\Playvoi.Server.pdb
|
||||||
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\obj\Release\net9.0\Playvoi.Server.genruntimeconfig.cache
|
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\obj\Release\net9.0\Playvoi.Server.genruntimeconfig.cache
|
||||||
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\obj\Release\net9.0\ref\Playvoi.Server.dll
|
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\obj\Release\net9.0\ref\Playvoi.Server.dll
|
||||||
|
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\bin\Release\net9.0\LiteNetLib.dll
|
||||||
|
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\obj\Release\net9.0\Playvoi.Server.csproj.AssemblyReference.cache
|
||||||
|
F:\_Work\_PersonelWorks\Playvoi\Playvoi.Server\Playvoi.Server\Playvoi.Server\obj\Release\net9.0\Playvoi..EE84DD13.Up2Date
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,11 +1,51 @@
|
||||||
{
|
{
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"targets": {
|
"targets": {
|
||||||
"net9.0": {}
|
"net9.0": {
|
||||||
|
"LiteNetLib/1.3.5": {
|
||||||
|
"type": "package",
|
||||||
|
"compile": {
|
||||||
|
"lib/net8.0/LiteNetLib.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/LiteNetLib.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"LiteNetLib/1.3.5": {
|
||||||
|
"sha512": "WKJEIdQfLDWFEzdKpLZzwB9Umci/2TWxX6ZZnZHhbJ4Z0c1eccS2pZpgUFcHtEnrUY+H1vOFqxzOrgoQpG6unQ==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "litenetlib/1.3.5",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"LNL.png",
|
||||||
|
"README.md",
|
||||||
|
"lib/net6.0/LiteNetLib.dll",
|
||||||
|
"lib/net6.0/LiteNetLib.xml",
|
||||||
|
"lib/net7.0/LiteNetLib.dll",
|
||||||
|
"lib/net7.0/LiteNetLib.xml",
|
||||||
|
"lib/net8.0/LiteNetLib.dll",
|
||||||
|
"lib/net8.0/LiteNetLib.xml",
|
||||||
|
"lib/netstandard2.0/LiteNetLib.dll",
|
||||||
|
"lib/netstandard2.0/LiteNetLib.xml",
|
||||||
|
"lib/netstandard2.1/LiteNetLib.dll",
|
||||||
|
"lib/netstandard2.1/LiteNetLib.xml",
|
||||||
|
"litenetlib.1.3.5.nupkg.sha512",
|
||||||
|
"litenetlib.nuspec"
|
||||||
|
]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"libraries": {},
|
|
||||||
"projectFileDependencyGroups": {
|
"projectFileDependencyGroups": {
|
||||||
"net9.0": []
|
"net9.0": [
|
||||||
|
"LiteNetLib >= 1.3.5"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"packageFolders": {
|
"packageFolders": {
|
||||||
"C:\\Users\\MAMAK\\.nuget\\packages\\": {},
|
"C:\\Users\\MAMAK\\.nuget\\packages\\": {},
|
||||||
|
|
@ -56,6 +96,12 @@
|
||||||
"frameworks": {
|
"frameworks": {
|
||||||
"net9.0": {
|
"net9.0": {
|
||||||
"targetAlias": "net9.0",
|
"targetAlias": "net9.0",
|
||||||
|
"dependencies": {
|
||||||
|
"LiteNetLib": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[1.3.5, )"
|
||||||
|
}
|
||||||
|
},
|
||||||
"imports": [
|
"imports": [
|
||||||
"net461",
|
"net461",
|
||||||
"net462",
|
"net462",
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"dgSpecHash": "M0ryP2MvocM=",
|
"dgSpecHash": "Ssqo8UqQtd0=",
|
||||||
"success": true,
|
"success": true,
|
||||||
"projectFilePath": "F:\\_Work\\_PersonelWorks\\Playvoi\\Playvoi.Server\\Playvoi.Server\\Playvoi.Server\\Playvoi.Server.csproj",
|
"projectFilePath": "F:\\_Work\\_PersonelWorks\\Playvoi\\Playvoi.Server\\Playvoi.Server\\Playvoi.Server\\Playvoi.Server.csproj",
|
||||||
"expectedPackageFiles": [],
|
"expectedPackageFiles": [
|
||||||
|
"C:\\Users\\MAMAK\\.nuget\\packages\\litenetlib\\1.3.5\\litenetlib.1.3.5.nupkg.sha512"
|
||||||
|
],
|
||||||
"logs": []
|
"logs": []
|
||||||
}
|
}
|
||||||
|
|
@ -1 +1 @@
|
||||||
"restore":{"projectUniqueName":"F:\\_Work\\_PersonelWorks\\Playvoi\\Playvoi.Server\\Playvoi.Server\\Playvoi.Server\\Playvoi.Server.csproj","projectName":"Playvoi.Server","projectPath":"F:\\_Work\\_PersonelWorks\\Playvoi\\Playvoi.Server\\Playvoi.Server\\Playvoi.Server\\Playvoi.Server.csproj","outputPath":"F:\\_Work\\_PersonelWorks\\Playvoi\\Playvoi.Server\\Playvoi.Server\\Playvoi.Server\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net9.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net9.0":{"targetAlias":"net9.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"all"},"SdkAnalysisLevel":"9.0.100"}"frameworks":{"net9.0":{"targetAlias":"net9.0","imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\9.0.100/PortableRuntimeIdentifierGraph.json"}}
|
"restore":{"projectUniqueName":"F:\\_Work\\_PersonelWorks\\Playvoi\\Playvoi.Server\\Playvoi.Server\\Playvoi.Server\\Playvoi.Server.csproj","projectName":"Playvoi.Server","projectPath":"F:\\_Work\\_PersonelWorks\\Playvoi\\Playvoi.Server\\Playvoi.Server\\Playvoi.Server\\Playvoi.Server.csproj","outputPath":"F:\\_Work\\_PersonelWorks\\Playvoi\\Playvoi.Server\\Playvoi.Server\\Playvoi.Server\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net9.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net9.0":{"targetAlias":"net9.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"all"},"SdkAnalysisLevel":"9.0.100"}"frameworks":{"net9.0":{"targetAlias":"net9.0","dependencies":{"LiteNetLib":{"target":"Package","version":"[1.3.5, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\9.0.100/PortableRuntimeIdentifierGraph.json"}}
|
||||||
|
|
@ -1 +1 @@
|
||||||
17686012387702640
|
17686021595132556
|
||||||
|
|
@ -1 +1 @@
|
||||||
17686012387702640
|
17686021599175449
|
||||||
Loading…
Reference in a new issue