A simple to use TCP and UDP networking library for .NET Core and .NET Framework.
- 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)
- .NET Standard 2.0
- .NET Standard 1.6
- .NET Core
- .NET Framework 4.6+
Install-Package Networker
Networker uses a client-server architecture for communication.
Many clients can connect to a single server.
public class Program
{
static void Main(string[] args)
{
var server = new NetworkerServerBuilder()
.UseConsoleLogger()
.UseTcp(1050)
.RegisterPacketHandler<ChatMessagePacket, ChatMessagePacketHandler>()
.Build<DefaultServer>()
.Start();
}
}
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();
}
}
public class ChatMessagePacket : NetworkerPacketBase
{
[Index(0)]
public virtual string Message { get; set; }
[Index(1)]
public virtual string Sender { get; set; }
}
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}");
});
}
}
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);
}
}
}
this.client.Send(new ChatMessagePacket
{
Sender = Environment.MachineName,
Message = this.MessageBox.Text
});