48 lines
1.2 KiB
C#
48 lines
1.2 KiB
C#
using LiteNetLib;
|
|
using LiteNetLib.Utils;
|
|
|
|
const int PORT = 9500;
|
|
const string CONNECTION_KEY = "game";
|
|
|
|
var listener = new EventBasedNetListener();
|
|
var server = new NetManager(listener);
|
|
|
|
listener.ConnectionRequestEvent += request =>
|
|
{
|
|
request.AcceptIfKey(CONNECTION_KEY);
|
|
};
|
|
|
|
listener.PeerConnectedEvent += peer =>
|
|
{
|
|
Console.WriteLine($"[CONNECT] {peer.Port} (ID:{peer.Id}, Total:{server.ConnectedPeersCount})");
|
|
};
|
|
|
|
listener.PeerDisconnectedEvent += (peer, info) =>
|
|
{
|
|
Console.WriteLine($"[DISCONNECT] {peer.Port} Reason:{info.Reason} (Remaining:{server.ConnectedPeersCount})");
|
|
};
|
|
|
|
listener.NetworkReceiveEvent += (fromPeer, reader, channel, deliveryMethod) =>
|
|
{
|
|
var msg = reader.GetString();
|
|
Console.WriteLine($"[RECV] ID:{fromPeer.Id} → {msg}");
|
|
|
|
// 클라이언트 ReceivedCount 증가시키려면 응답 필요
|
|
var writer = new NetDataWriter();
|
|
writer.Put($"ack:{msg}");
|
|
fromPeer.Send(writer, deliveryMethod);
|
|
|
|
reader.Recycle();
|
|
};
|
|
|
|
server.Start(PORT);
|
|
Console.WriteLine($"[SERVER] Started on port {PORT}. Press Enter to stop.");
|
|
|
|
while (!Console.KeyAvailable)
|
|
{
|
|
server.PollEvents();
|
|
Thread.Sleep(15);
|
|
}
|
|
|
|
server.Stop();
|
|
Console.WriteLine("[SERVER] Stopped."); |