예제 #1
0
        private Task StartUDPListener(CancellationToken token)
        {
            return(Task.Factory.StartNew(() => {
                UdpClient listener = new UdpClient(5556);
                listener.EnableBroadcast = true;

                while (!token.IsCancellationRequested)
                {
                    IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 5556);
                    byte[] message = listener.Receive(ref endpoint);

                    Chat.Model.Message msg = default(Chat.Model.Message);
                    XmlSerializer serializer = new XmlSerializer(typeof(Chat.Model.Message));
                    using (Stream memStream = new MemoryStream(message)) {
                        memStream.Position = 0;
                        msg = serializer.Deserialize(memStream) as Chat.Model.Message;

                        memStream.Close();
                    }

                    if (msg != null)
                    {
                        AppendToTextBox($"{msg.From} : {msg.Msg}");
                        LogMessageToFile($"{msg.From} : {msg.Msg}");
                    }
                }
            }, token));
        }
예제 #2
0
        private void btnSend_Click(object sender, EventArgs e)
        {
            Chat.Model.Message msg = new Chat.Model.Message(txtAlias.Text, txtMessage.Text);

            _client = new TcpClient("localhost", 5555);

            using (Stream networkStream = _client.GetStream())
                using (StreamWriter sw = new StreamWriter(networkStream)) {
                    sw.Write(msg.Serialize());
                    sw.Close();
                }
            txtMessage.Text = "";
            txtMessage.Focus();
        }