Example #1
0
        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);
                }
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
        public void Send_NotConnected()
        {
            var client = new FeatherTcpClient <BinaryMessage>();

            Assert.Throws <InvalidOperationException>(() => {
                client.Send(TestMessage1);
            });
        }
Example #4
0
        public void RequestChunk(ChunkPos pos)
        {
            var m = new GenericMessage();

            m.WriteUnsignedInteger(2);

            m.WriteSignedInteger(pos.x);
            m.WriteSignedInteger(pos.z);

            client.Send(m);
        }
Example #5
0
        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);
                }
            }
        }
Example #6
0
        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);
                });
            }
        }