winform网络编程之DNS类,IPAddress类和IPEndPoint类以及如何获取本地ip地址
来源:互联网 发布:电子数据交换的好处 编辑:程序博客网 时间:2024/05/16 04:45
课设要求做windows下的socket通信编程,没有办法,恶补吧。一向不喜欢网络编程的我只能慢慢来,说实话不是不喜欢,是怕麻烦。
计算机有那么多层的结构,每层又有那么多协议,明白每个协议的内容和作用,对通信的流程有很清晰的了解,对传输的数据明白怎样进行解析,明白怎样唯一确定到网络中的某个特定的计算机,怎样解析DNS等等,特别是最烦网络这一层,什么ip,dns,socket,tcp,http,udp等等真的是傻傻分不清楚。、
其他先不谈,只能先说C#下的网络编程了。
1.明确什么是端口port:想想计算机为什么能对外传输数据,对内接受数据的?很简单一个不太恰当的比方,一个水库,能蓄水能排水,水是怎么进去又是怎么出来的呢,肯定是通过水库的闸门了,ok,那个闸门就是我理解的端口。
不恰当的地方是,不能形容一个端口可以被不同的程序占用,但不能同时占用。
2.明确什么是套接字Socket:只要牢记Socket介于应用程序和Port之间,用于将应用程序与端口连接起来。
3.DNS类
(1)常用方法:
GetHostAddresses 返回指定主机的Internet协议(ip)地址族
GetHostEntry 将主机名或IP地址解析为IPHostEntry实例
GetHostName 获取本地计算机的主机名,与GetHostByName有联系
GetHostByAddress 获取IP地址的DNS主机信息
GetHostByName 获取指定DNS主机名的DNS信息,与GetHostName有联系
(2)实例代码:
string hostName = Dns.GetHostName();//获取本机名string dnsInfo = Dns.GetHostByName(Dns.GetHostName()).HostName;//根据指定的主机名获取DNS信息
4.IPAddress类
(1)重要的字段,属性和方法:
Any字段 提供一个IP地址,指示服务器应侦听所有网路接口上的客户端活动,只读
Address属性 IP地址
AddressFamily属性 IP地址的地址族
Parse方法 将IP地址字符串转换为IPAdress实例(这个很常用)
(2)实例代码:
IPAddress[] ips = Dns.GetHostAddresses(这边是你的ip地址);//获取指定主机的IP地址族 foreach(IPAddress ip in ips)//循环遍历得到IP地址 { string ipAddress = ip.ToString();//ipAddress即是ip地址的字符串 } IPAddress ipaddress = IPAddress.Parse(这边是IP地址字符串);
3.IPEndPoint类
说白了,我的理解,这个类就相当于一个包装器,组合器。通过组合服务的主机IP地址和端口号,形成到服务的连接点。
(1)常用的字段,属性:
Address属性 获取或设置终结点的IP地址
AddressFamily属性 获取IP地址族
Port属性 获取或设置终结点的端口号
(2)实例代码:
//创建IPEndPoint对象,当然你可以直接new IPEndPoint(IPAddress类型的ip地址,8888)IPEndPoint IPEPoint = new IPEndPoint(IPAddress.Prase(IP地址字符串),8888)//获取它的IP地址IPAddress ipAddress = IPEPoint.Address//获取它的端口号int port = IPEPoint.Port
综上所述:
总结了两种获得本地ip地址的方式:
1.
IPAddress[] ip = Dns.GetHostAddresses(Dns.GetHostName());foreach(IPAddress ip in ips){ IPAddress ipa = ip.Address}
当然这是一个foreach循环,里面不会那么写,那样写就覆盖掉之前的了,这边一般是把结果转换成string类型显示在前台的某个label里面或者textbox里面。我这边只是一个例子罢了,莫较真。
2.IPHostEntry:为Internet主机地址信息提供容器的类,你看做容器就行了。
当然也可以充分利用DNS类的GetHostEntry这个方法,原理类似
IPHostEntry ipEntry = Dns.GetHostByName(Dns.GetHostName());IPAddress ip = ipEntry.AddressList[0];
- winform网络编程之DNS类,IPAddress类和IPEndPoint类以及如何获取本地ip地址
- 使用IPAddress类与IPEndPoint类
- C#中IPAddress类/Dns类/IPHostEntry类/IPEndPoint用法简介
- C#网络编程基本字段---IPAddress、IPEndPoint
- Java网络编程之获取IP地址:InetAddress类
- IPAddress类与Dns类
- 嵌入式 获取网卡设备以及IP和MAC地址示例以及网络编程之ioctl小结
- IPEndPoint类
- IPEndPoint类
- Java网络编程之IP地址和InetAddress类
- Java网络编程之IP地址和InetAddress类
- C# socket学习--IPAddress、IPEndPoint、DNS
- C#编程之 如何获取本地和远程主机的IP及MAC地址
- C#编程之 如何获取本地和远程主机的IP及MAC地址
- C#编程之 如何获取本地和远程主机的IP及MAC地址
- IPEndPoint类的使用方法(C#---网络编程)
- C# 中IPAddress和IPEndPoint的意思
- IPAddress类的使用方法(C#---网络编程)
- class和struct
- strust2、hibernate3和spring3
- 从EMFILE和ENFILE说起,fd limit的问题(一)
- 颜色特征及其提取
- VisualStudio2010配置OpenCV的一种一劳永逸的方法
- winform网络编程之DNS类,IPAddress类和IPEndPoint类以及如何获取本地ip地址
- 新辰:90后五次创业经验分享:草根如何从零开始创业?
- MetaClass in Python
- 图像处理基础知识
- HDU 1233还是畅通工程——克鲁斯卡尔算法(带并查集)
- 设计模式 - 单件模式(singleton pattern) 详解
- 对正则表达式的理解
- 网站添加Google翻译代码
- SQL语句的添加、删除、修改多种方法