Skip to content

davi1td/Networker

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build status NuGet

Networker

A simple to use TCP and UDP networking library for .NET Core and .NET Framework.

Features

  • TCP
  • UDP
  • Low memory footprint
  • Handle thousands of simultaneous connections
  • Incredibly fast serialization using ZeroFormatter
  • Plug in your choice of logging
  • Plug in your choice of IOC
  • Unity (.NET 4.6+ Only)

Supported Frameworks

  • .NET Standard 2.0
  • .NET Standard 1.6
  • .NET Core
  • .NET Framework 4.6+

Installing

Install-Package Networker

Getting Started

Networker uses a client-server architecture for communication.

Many clients can connect to a single server.

Creating a TCP Server

public class Program
    {
        static void Main(string[] args)
        {
            var server = new NetworkerServerBuilder()
            .UseConsoleLogger()
            .UseTcp(1050)
            .RegisterPacketHandler<ChatMessagePacket, ChatMessagePacketHandler>()
            .Build<DefaultServer>()
            .Start();
        }
    }

Creating a TCP Client

public class Program
    {
        static void Main(string[] args)
        {
            var client = new NetworkerClientBuilder()
            .UseConsoleLogger()
            .UseIp("127.0.0.1")
            .UseTcp(1050)
            .RegisterPacketHandler<ChatMessagePacket, ChatMessageReceivedPacketHandler>()
            .Build<DefaultClient>()
            .Connect();
        }
    }

Creating a Packet

public class ChatMessagePacket : NetworkerPacketBase
    {
        [Index(0)]
        public virtual string Message { get; set; }

        [Index(1)]
        public virtual string Sender { get; set; }
    }

Creating a Client Packet Handler

public class ChatMessageReceivedPacketHandler : PacketHandlerBase<ChatMessagePacket>
    {
        public override void Handle(ChatMessagePacket packet)
        {
            var window = MainWindow.Instance;

            window.Dispatcher.Invoke(() =>
                                     {
                                         window.MessageListBox.Items.Add($"{packet.Sender}: {packet.Message}");
                                     });
        }
    }

Creating a Server Packet Handler

public class ChatMessagePacketHandler : ServerPacketHandlerBase<ChatMessagePacket>
    {
        private readonly ITcpConnectionsProvider connectionsProvider;

        public ChatMessagePacketHandler(ITcpConnectionsProvider connectionsProvider)
        {
            this.connectionsProvider = connectionsProvider;
        }

        public override void Handle(INetworkerConnection sender, ChatMessagePacket packet)
        {
            foreach(var tcpConnection in this.connectionsProvider.Provide())
            {
                tcpConnection.Send(packet);
            }
        }
    }

Sending a packet from Client to Server

this.client.Send(new ChatMessagePacket
                             {
                                 Sender = Environment.MachineName,
                                 Message = this.MessageBox.Text
                             });

About

A simple to use TCP and UDP networking library for .NET Core and .NET Framework. Compatible with Unity Game Engine.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%