C# UDP Socket 笔记

这篇博客详细介绍了C#中的网络编程,包括如何获取本地IP、UDP和Socket的基本使用。通过`GetLocalIP_LAN80211`和`GetLocalIP_V2`方法获取本地IP,利用UdpClient进行UDP广播和接收。还展示了Socket在服务端和客户端的角色,以及如何判断Socket连接状态。最后,给出了局域网聊天的实现思路,利用UDP广播或Socket连接进行通信。


(所有注释全部出自C#官方文档 地址

网络相关常用接口

获取本地IP

//通过网络接口描述来获取IP

       public static string GetLocalIP_LAN80211()
        {
   
   
            //GetAllNetworkInterfaces 返回描述本地计算机上的网络接口的对象。
            foreach (var interfaces in NetworkInterface.GetAllNetworkInterfaces())
            {
   
   
                //NetworkInterfaceType 网络接口的类型,Wireless80211 网络接口使用无线 LAN 连接(IEEE 802.11 标准)。
                //OperationalStatus 指定网络接口的操作状态,Up 网络接口已运行,可以传输数据包。
                if (interfaces.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 && interfaces.OperationalStatus == OperationalStatus.Up)
                {
   
   
                    //GetIPProperties 返回描述此网络接口的配置的对象。
                    //IPInterfaceProperties 提供有关支持 Internet 协议版本 4 (IPv4) 或 Internet 协议版本 6 (IPv6) 的网络接口的信息。
                    //UnicastAddresses 获取分配给此接口的单播地址。
                    foreach (var ip in interfaces.GetIPProperties().UnicastAddresses)
                    {
   
   
                        //InterNetwork IP 版本 4 的地址。InterNetworkV6 IP 版本 6 的地址。
                        if (ip.Address.AddressFamily == AddressFamily.InterNetwork)
                        {
   
   
                            //192. 开头保证获取的是内网地址
                            if (ip.Address.ToString().StartsWith("192."))
                                return ip.Address.ToString();
                        }
                    }
                }
            }

            return string.Empty;
        }
//通过DNS解析本地IP
        public static string GetLocalIP_V2()
        {
   
   
            try
            {
   
   
                //获取本地计算机的主机名。
                string HostName = Dns.GetHostName();
                //将主机名或 IP 地址解析为 IPHostEntry 实例。
                IPHostEntry IpEntry = Dns.GetHostEntry(HostName);
                //AddressList 获取或设置与主机关联的 IP 地址列表。
                for (int i = 0; i < IpEntry
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值