예제 #1
0
        public async Task SendMessageAsync()
        {
            var socket = new Socket(SocketType.Dgram, ProtocolType.Udp);

            socket.Bind(new IPEndPoint(IPAddress.Loopback, 12345));

            using (var peer = new FeatherUdpPeer <BinaryMessage>()) {
                await peer.SendToAsync(new IPEndPoint(IPAddress.Loopback, 12345), TestMessage1);

                await peer.SendToAsync(new IPEndPoint(IPAddress.Loopback, 12345), TestMessage2);
            }

            byte[] buf = new byte[100];
            Int32  len;

            len = socket.Receive(buf);
            Assert.Equal(TestPayload1.Length, len);
            Assert.Equal(TestPayload1, buf.Take(3));

            len = socket.Receive(buf);
            Assert.Equal(TestPayload2.Length, len);
            Assert.Equal(TestPayload2, buf.Take(3));
        }
예제 #2
0
        public async void Dispose()
        {
            var peer = new FeatherUdpPeer <BinaryMessage>();

            Assert.False(peer.IsDisposed);
            peer.Bind(12347);
            Assert.False(peer.IsDisposed);
            peer.Dispose();
            Assert.True(peer.IsDisposed);

            Assert.Throws <ObjectDisposedException>(() => {
                peer.SendTo(new IPEndPoint(IPAddress.Loopback, 12346), TestMessage1);
            });

            await Assert.ThrowsAsync <ObjectDisposedException>(async() => {
                await peer.SendToAsync(new IPEndPoint(IPAddress.Loopback, 12346), TestMessage1);
            });
        }