void IApplication.OnInit(string[] args) { server = FNet.CreateTcpServer(new TcpServerConfig() { KeepAlive = 5000, SendImmediately = true, }); server.OnClientConnected += conn => { Console.WriteLine($"connected: {conn.ConnectionId} {conn.IP}:{conn.Port}"); client++; }; server.OnClientDisconnected += (conn, type) => { Console.WriteLine($"disconnected: {conn.ConnectionId} {type}"); }; server.OnClientReceive += (conn, data) => { var msg = Encoding.UTF8.GetString(data); Console.WriteLine($"receive: {conn.ConnectionId} {msg}"); var send = Encoding.UTF8.GetBytes("pong"); conn.Send(send); }; server.OnServerClosed += server => { Console.WriteLine("Server closed."); }; server.BeginAccept(); }
public static void Main(string[] args) { var server = FNet.CreateTCPServer(new TcpServerConfig() { IpAsString = "127.0.0.1", Port = 13000, MaxConnection = 5, PackageMaxSize = 1024, }); server.OnClientConnected += conn => { handshakes.Add(conn.ConnectionId, new ConnectionInfo() { Connection = conn, ConnectTime = FDateTime.Now.TimeStamp, }); }; server.OnClientReceive += (conn, data) => { if (handshakes.ContainsKey(conn.ConnectionId)) { var msg = Encoding.UTF8.GetString(data); var regex = new Regex(@"^handshake (a-zA-Z)+$"); var matches = regex.Matches(msg); if (matches.Count != 1) { conn.Close(); return; } var groups = matches[0].Groups; if (groups.Count != 1) { conn.Close(); return; } var name = groups[0]; } }; while (true) { server.Update(); var now = FDateTime.Now.TimeStamp; foreach (var conn in handshakes.Values.ToList()) { } Thread.Sleep(100); } }