public override SocketTasks StartClient() { SocketConfig config = GetConfig(false, NetworkingManager.Singleton.NetworkConfig); socket = new RuffleSocket(config); isConnector = true; if (!socket.Start()) { return(SocketTask.Fault.AsTasks()); } serverConnection = socket.Connect(new IPEndPoint(IPAddress.Parse(ConnectAddress), Port)); if (serverConnection == null) { return(SocketTask.Fault.AsTasks()); } else { connectTask = SocketTask.Working; return(connectTask.AsTasks()); } }
public bool Connect(IPEndPoint endPoint) { socket = new RuffleSocket(new SocketConfig { ChallengeDifficulty = 20, ChannelTypes = new[] { ChannelType.ReliableSequencedFragmented }, DualListenPort = 0 }); if (!socket.Start()) { return(false); } var con = socket.Connect(endPoint); if (con != null) { return(true); } return(false); }
public override void StartClient() { SocketConfig config = GetConfig(); // The OS will grab a port config.DualListenPort = 0; socket = new RuffleSocket(config); isConnector = true; socket.Connect(new IPEndPoint(IPAddress.Parse(ConnectAddress), ConnectPort)); }
public override bool StartClient() { SocketConfig config = GetConfig(false); socket = new RuffleSocket(config); isConnector = true; if (!socket.Start()) { return(false); } serverConnection = socket.Connect(new IPEndPoint(IPAddress.Parse(ConnectAddress), Port)); if (serverConnection == null) { return(false); } return(true); }
public void Run() { var platform = new DesktopPlatform(); WindowCreateInfo wci = new WindowCreateInfo { X = 100, Y = 100, WindowWidth = 1280, WindowHeight = 720, WindowTitle = "Tortuga Demo" }; GraphicsDeviceOptions options = new GraphicsDeviceOptions( debug: false, swapchainDepthFormat: PixelFormat.R16_UNorm, syncToVerticalBlank: true, resourceBindingModel: ResourceBindingModel.Improved, preferDepthRangeZeroToOne: true, preferStandardClipSpaceYDirection: true); #if DEBUG options.Debug = true; #endif _window = platform.CreateWindow(wci, options, GraphicsBackend.Vulkan) as DesktopWindow; _window.GraphicsDeviceCreated += LoadResources; _window.Tick += Update; _window.Resized += _window_Resized; _viewport = new ViewportManager(1280, 720); _cameraSpaceInputTracker = new TransformedInputTracker(_window.InputTracker); _cameraSpaceGameInputTracker = new ActiveInputTracker(_cameraSpaceInputTracker); _client.Start(); _client.Connect(new IPEndPoint(IPAddress.Loopback, 5674)); _window.Run(); }
public static void Main(string[] args) { RuffleSocket server = new RuffleSocket(ServerConfig); RuffleSocket client = new RuffleSocket(ClientConfig); client.Start(); server.Start(); if (IPv6) { // IPv6 Connect client.Connect(new IPEndPoint(IPAddress.Parse("0:0:0:0:0:0:0:1"), 5674)); } else { // IPv4 Connect client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5674)); } // The server stores the clients id here Connection clientConnection = null; // The client stores the servers id here Connection serverConnection = null; // The time when the connection started DateTime started = DateTime.Now; // The time when the last message was sent DateTime lastSent = DateTime.MinValue; // The time the last status was printed DateTime lastStatusPrint = DateTime.MinValue; // The amount of message that has been received int messagesReceived = 0; // The amount of messages that has been sent int messageCounter = 0; while (true) { // Polls server for events NetworkEvent serverEvent = server.Poll(); // Polls client for events NetworkEvent clientEvent = client.Poll(); if (serverEvent.Type != NetworkEventType.Nothing) { Console.WriteLine("ServerEvent: " + serverEvent.Type); if (serverEvent.Type == NetworkEventType.Connect) { clientConnection = serverEvent.Connection; } if (serverEvent.Type == NetworkEventType.AckNotification) { Console.WriteLine("The remote acked message id: " + serverEvent.NotificationKey); } } serverEvent.Recycle(); if (clientEvent.Type != NetworkEventType.Nothing) { Console.WriteLine("ClientEvent: " + clientEvent.Type); if (clientEvent.Type == NetworkEventType.Connect) { serverConnection = clientEvent.Connection; } if (clientEvent.Type == NetworkEventType.Data) { messagesReceived++; Console.WriteLine("Got message: \"" + Encoding.ASCII.GetString(clientEvent.Data.Array, clientEvent.Data.Offset, clientEvent.Data.Count) + "\""); } } clientEvent.Recycle(); if (serverConnection != null && clientConnection != null && serverConnection.State == ConnectionState.Connected && clientConnection.State == ConnectionState.Connected && (DateTime.Now - lastSent).TotalSeconds >= (1f / 1)) { byte[] helloReliable = Encoding.ASCII.GetBytes("This message was sent over a reliable channel" + messageCounter); clientConnection.Send(new ArraySegment <byte>(helloReliable, 0, helloReliable.Length), 1, false, (ulong)messageCounter); Console.WriteLine("Sending packet: " + messageCounter); messageCounter++; lastSent = DateTime.Now; } if (serverConnection != null && clientConnection != null && serverConnection.State == ConnectionState.Connected && clientConnection.State == ConnectionState.Connected && (DateTime.Now - lastStatusPrint).TotalSeconds >= 5) { Console.WriteLine("Ping: " + serverConnection.SmoothRoundtrip + "ms, " + clientConnection.SmoothRoundtrip + "ms"); lastStatusPrint = DateTime.Now; } } }
private static void NoRufflesManager() { RuffleSocket server = new RuffleSocket(ServerConfig); RuffleSocket client = new RuffleSocket(ClientConfig); // IPv4 Connect //client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5674)); // IPv6 Connect client.Connect(new IPEndPoint(IPAddress.Parse("0:0:0:0:0:0:0:1"), 5674)); // The server stores the clients id here ulong clientId = 0; // The client stores the servers id here ulong serverId = 0; // The time when the connection started DateTime started = DateTime.Now; // The time when the last message was sent DateTime lastSent = DateTime.MinValue; // The amount of message that has been received int messagesReceived = 0; // The amount of messages that has been sent int messageCounter = 0; while (true) { // Runs all the internals client.RunInternalLoop(); // Runs all the internals server.RunInternalLoop(); // Polls server for events NetworkEvent serverEvent = server.Poll(); // Polls client for events NetworkEvent clientEvent = client.Poll(); if (serverEvent.Type != NetworkEventType.Nothing) { if (serverEvent.Type != NetworkEventType.Data) { Console.WriteLine("ServerEvent: " + serverEvent.Type); } if (serverEvent.Type == NetworkEventType.Connect) { clientId = serverEvent.Connection.Id; } if (serverEvent.Type == NetworkEventType.Disconnect || serverEvent.Type == NetworkEventType.Timeout) { serverEvent.Connection.Recycle(); } } if (clientEvent.Type != NetworkEventType.Nothing) { if (clientEvent.Type != NetworkEventType.Data) { Console.WriteLine("ClientEvent: " + clientEvent.Type); } if (clientEvent.Type == NetworkEventType.Connect) { serverId = clientEvent.Connection.Id; } if (clientEvent.Type == NetworkEventType.Data) { messagesReceived++; Console.WriteLine("Got message: \"" + Encoding.ASCII.GetString(clientEvent.Data.Array, clientEvent.Data.Offset, clientEvent.Data.Count) + "\""); clientEvent.Recycle(); } if (clientEvent.Type == NetworkEventType.Disconnect || clientEvent.Type == NetworkEventType.Timeout) { clientEvent.Connection.Recycle(); } } if ((DateTime.Now - started).TotalSeconds > 10 && (DateTime.Now - lastSent).TotalSeconds >= 1) { byte[] helloReliable = Encoding.ASCII.GetBytes("This message was sent over a reliable channel" + messageCounter); byte[] helloReliableSequenced = Encoding.ASCII.GetBytes("This message was sent over a reliable sequenced channel" + messageCounter); server.Send(new ArraySegment <byte>(helloReliableSequenced, 0, helloReliableSequenced.Length), clientId, 0, false); server.Send(new ArraySegment <byte>(helloReliable, 0, helloReliable.Length), clientId, 1, false); messageCounter++; lastSent = DateTime.Now; } } }