用C#设计一个基于UDP协议的简单网络聊天器

简介:
用C#设计一个基于UDP协议的简单网络聊天器
 
 
不多说废话,这是一个简单的基于UDP协议的组播群聊器
界面如下:
 
源文件见附件:
代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace MulticastExample
{
    public partial class Form1 : Form
    {
        delegate void AppendStringCallback(string text);
        AppendStringCallback appendStringCallback;
        //使用的接收端口号
        private int port = 8001;
        private UdpClient udpClient;
        public Form1()
        {
            InitializeComponent();
            appendStringCallback = new AppendStringCallback(AppendString);
        }
        private void AppendString(string text)
        {
            if (richTextBox1.InvokeRequired)
            {
                richTextBox1.Invoke(appendStringCallback, text);
            }
            else
            {
                richTextBox1.AppendText(text + "\r\n");
            }
        }
        private void ReceiveData()
        {
            udpClient = new UdpClient(port);
            //必须使用组播的地址范围内的地址
            udpClient.JoinMulticastGroup(IPAddress.Parse("224.100.0.1"), 50);
            IPEndPoint remote = null;
            //接收从远程主机发送过来的信息
            while (true)
            {
                try
                {
                    //关闭udpClient时此句会产生异常
                    byte[] bytes = udpClient.Receive(ref remote);
                    string str = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
                    AppendString(string.Format("来自{0}:{1}", remote, str));
                }
                catch
                {
                    //退出循环,结束线程
                    break;
                }
            }
        }
        private void btnSend_Click(object sender, EventArgs e)
        {
            UdpClient myUdpClient = new UdpClient();
            try
            {
                //允许发送和接收广播数据报
                myUdpClient.EnableBroadcast = true;
                //必须使用组播地址范围内的地址
                IPEndPoint iep = new IPEndPoint(IPAddress.Parse("224.100.0.1"), port);
                //将发送内容转换为字节数组
                byte[] bytes = Encoding.UTF8.GetBytes(txbSend.Text);
                //向子网发送信息
                myUdpClient.Send(bytes, bytes.Length, iep);
                txbSend.Clear();
                txbSend.Focus();
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message, "发送失败");
            }
            finally
            {
                myUdpClient.Close();
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            Thread receiveThread = new Thread(new ThreadStart(ReceiveData));
            //将线程设为后台运行
            receiveThread.IsBackground = true;
            receiveThread.Start();
        }
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            udpClient.Close();
        }
    }
}


本文转自gauyanm 51CTO博客,原文链接:http://blog.51cto.com/gauyanm/340047,如需转载请自行联系原作者
相关文章
|
9天前
|
算法 网络协议
生成树协议:网络稳定的守护者
【4月更文挑战第22天】
16 0
|
11天前
|
缓存 网络协议 网络架构
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
17 1
|
11天前
|
网络协议 算法 网络虚拟化
【计算机网络】第三章 数据链路层(点对点协议 媒体介入控制)
【计算机网络】第三章 数据链路层(点对点协议 媒体介入控制)
16 0
|
7天前
|
安全 网络协议 算法
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
|
7天前
|
网络协议 JavaScript 前端开发
Node.js的网络编程:深入TCP/UDP网络编程
【4月更文挑战第29天】本文介绍了如何在Node.js中进行TCP和UDP网络编程。使用net模块,可以创建TCP服务器和客户端,实现可靠的数据传输。例如,通过`net.createServer()`创建服务器,监听数据、关闭和错误事件。客户端使用`net.createConnection()`连接服务器并通信。另一方面,dgram模块用于UDP编程,创建UDP套接字并绑定端口,通过`server.send()`发送和接收数据报。TCP提供连接和数据可靠性,适合需要顺序和完整性的场景,而UDP更轻量级,适用于实时性要求高的应用。Node.js的网络编程能力使其成为开发高效网络应用的理想选择。
|
8天前
|
负载均衡 网络虚拟化
【专栏】全网对 STP 生成树协议最全面最优质的总结,网络工程师收藏!
【4月更文挑战第28天】本文详细介绍了生成树协议(STP),用于消除网络环路并确保单向通信路径。STP基于IEEE 802.1D,涉及根桥选举、端口角色分配及构建无环路径。高级特性包括快速STP(RSTP)的快速收敛、多实例STP(MSTP)的负载均衡和容错,以及各种保护机制。文章还讨论了实际案例和故障排除,为网络工程师提供STP的全面理解与应用指南。
|
9天前
|
Prometheus 监控 安全
SNMP简介:网络管理的关键协议详解
【4月更文挑战第22天】
24 3
SNMP简介:网络管理的关键协议详解
|
9天前
|
网络协议 Linux iOS开发
|
9天前
|
监控 安全 网络虚拟化
|
10天前
|
缓存 网络协议 安全
TCP和UDP 传输层协议的区别
TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。
13 2