public void Send() { using (var socket = new Socket(SocketType.Stream, ProtocolType.Tcp)) { socket.NoDelay = true; socket.Bind(new IPEndPoint(IPAddress.Loopback, 12000)); socket.Listen(1); using (var client = new FeatherTcpClient <BinaryMessage>()) { client.Connect("127.0.0.1", 12000); var socketa = socket.Accept(); client.Send(TestMessage1); client.Send(TestMessage2); Thread.Sleep(10); var buffer = new byte[TestWire1.Length]; var pos = 0; while (pos < buffer.Length) { var len = socketa.Receive(buffer, pos, TestWire1.Length - pos, SocketFlags.None); pos += len; } Assert.Equal(TestWire1, buffer); buffer = new byte[TestWire2.Length]; pos = 0; while (pos < buffer.Length) { var len = socketa.Receive(buffer, pos, TestWire2.Length - pos, SocketFlags.None); pos += len; } Assert.Equal(TestWire2, buffer); } } }
public void Tick() { if (client == null) { return; } if (SharpCraft.Instance.Player != null) { var m = new GenericMessage(); m.WriteUnsignedInteger(1); var pos = SharpCraft.Instance.Player.Pos; var dir = SharpCraft.Instance.Camera.GetLookVec(); m.WriteFloat(pos.X); m.WriteFloat(pos.Y); m.WriteFloat(pos.Z); m.WriteFloat(dir.X); m.WriteFloat(dir.Y); m.WriteFloat(dir.Z); client?.Send(m); } }
public void Send_NotConnected() { var client = new FeatherTcpClient <BinaryMessage>(); Assert.Throws <InvalidOperationException>(() => { client.Send(TestMessage1); }); }
public void RequestChunk(ChunkPos pos) { var m = new GenericMessage(); m.WriteUnsignedInteger(2); m.WriteSignedInteger(pos.x); m.WriteSignedInteger(pos.z); client.Send(m); }
static void Main(string[] args) { Console.WriteLine("What is your name?"); var myName = Console.ReadLine(); using (var client = new FeatherTcpClient <GenericMessage>()) { // Watch for messages to arrive client.OnMessageReceived += (message) => { // Read parameters in the same order they were written var name = message.ReadString(); var body = message.ReadString(); Console.WriteLine($"{name}> {body}"); }; // Watch for disconnetion client.OnDisconnected += (reason) => { Console.WriteLine($"Disconnected because '{reason}'."); }; // Connect to server client.Connect("127.0.0.1", 12345); // Loop sending messages Console.WriteLine("Connected. Type message to send."); while (true) { var body = Console.ReadLine(); if (body == string.Empty) { break; } // Create message var message = new GenericMessage(); message.WriteString(myName); message.WriteString(body); // Send message to broadcast address client.Send(message); } } }
public async Task Dispose() { using (var socket = new Socket(SocketType.Stream, ProtocolType.Tcp)) { socket.NoDelay = true; socket.Bind(new IPEndPoint(IPAddress.Loopback, 12006)); socket.Listen(1); var client = new FeatherTcpClient <BinaryMessage>(); client.Connect("127.0.0.1", 12006); Assert.False(client.IsDisposed); client.Dispose(); Assert.True(client.IsDisposed); Assert.Throws <ObjectDisposedException>(() => { client.Send(TestMessage1); }); await Assert.ThrowsAsync <ObjectDisposedException>(async() => { await client.SendAsync(TestMessage1); }); } }