四、IP地址转换

  IP地址与端口


  TCP/IP(传输控制协议/网际协议)不是一个协议,而是一组协议的总称,包括IP、TCP、UDP、ICMP、ARP等。它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据交换格式以及传送方式。

  

  IP地址:是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围内惟一的标识符。

  一个IP地址主要由两部分组成:网络地址和主机地址。

  网络地址由因特网权力机构分配,主机地址由各个网络的管理员统一分配。

  IP地址编制方案有两种:IPV4和IPV6

  IPV4:二进制表示共32位(4个字节)  

  IPV6:二进制表示共128位(16个字节)

  在IPV4编制方案中,一般使用点分十进制表示法表示IP地址。例如:192.168.1.1

  子网掩码:子网掩码用于屏蔽IP地址的一部分以区别网络标识和主机标识。

  把所有的网络位(二进制)用1来标识,主机位用0来标识。

  例如:对于IP地址192.168.0.X,可以将子网掩码设置为255.255.255.0,对于IP地址192.168.0.X,其网络标示部分为192.168.0;主机标示为:X

  端口:IP地址仅仅能够具体标识到某台主机,而端口则表示与计算机上的哪个进程通信。

  根据IP地址找到是与哪台机器通信,根据端口号找到是与该机器的哪个进程通信。

  (一个进程可能会使用多个端口) 端口地址的范围是十进制的0~65535

  IP地址转换相关类

  IPAddress类(System.Net命名空间下):

  常用IPAddress的 Parse方法将IP地址字符串转换为IPAddress的实例。

  例如:IPAddress ip = IPAddress.Parse(“192.168.1.1”);

  IPAddress类常用属性

  Any 提供一个IPv4地址,指示服务器应侦听所有网络接口上的客户端活动。(等效于0.0.0.0)

  Broadcast 提供IPv4广播地址(等效于255.255.255.255)

  Loopback 表示IPv4回送地址(等效于127.0.0.1)

  None 表示Socket不应侦听客户端活动(不使用任何网络接口)。

  IPv6Any 提供可用的IPv6地址

  IPv6Loopback 表示IPv6回送地址

  IPv6None 提供不使用任何网络接口。

  IPEndPoint类包含了连接到主机上的服务所需的IP地址和端口信息。

  IPEndPoint类常用的构造函数为:

  public IPEndPoint(IPAddress, int); 其中第一个参数指定IP地址,第二个参数指定端口号。

  IPHostEntry类的对象中包含了与主机相关的信息。

  常用属性:

    (1)AddressList属性:获取或设置与主机关联的IP地址列表,是一个IPAddress类型的数组,包含了指定主机的所有IP地址;

    (2)HostName属性:包含了服务器的主机名。

    (3)Aliases属性包含了与主机关联的别名列表。 在Dns类中,有一个专门获取IPHostEntry对象的方法。  

     例如:IPAddress[] ips =
Dns.GetHostEntry(“http://news.sohu.com").AddressList;

  域名解析

  DNS(Domain Name System,域名系统)提供了一系列静态的方法,用于获取提供本地或远程域名等功能,常用方法有:

  (1)GetHostAddresses方法 获取指定主机的IP地址,返回一个IPAddress类型的数组。

    格式为: public static IPAddress[] GetHostAddresses(string
hostNameOrAddress);

    例如:IPAddress[] ips=Dns.GetHostAddresses("www.cctv.com");

    注意:如果hostNameOrAddress是IP地址,则不查询DNS服务器,直接返回此地址。

  (2)GetHostEntry方法 在DNS服务器中查询与某个主机名或IP地址关联的IP地址。
当参数为空字符串时,此方法返回本地主机的IPv4地址和主机名。

    例如: IPHostEntry host = Dns.GetHostEntry("");

    listBox1.Items.AddRange(host.AddressList); //本机所有IPv4地址

    listBox1.Items.Add(host.HostName); //本机主机名

  (3) GetHostName方法 获取本机主机名。

    例如:string hostname = Dns.GetHostName();

时间: 2024-10-24 21:17:14

四、IP地址转换的相关文章

(四十七)socket编程——socket引入、网络字节序、IP地址转换函数、sockaddr数据结构介绍

一.什么是socket socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP地址+端口号"就称为socket. 在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接.socket本身有"插座"的意思,因此用来描述网络连接的一对一关系. TCP/IP协议最早在BSD UNIX上实现,为TCP/

字符串-06. IP地址转换(20)

一个IP地址是用四个字节(每个字节8个位)的二进制码组成.请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出. 输入格式: 输入在一行中给出32位二进制字符串. 输出格式: 在一行中输出十进制格式的IP地址,其由4个十进制数组成(分别对应4个8位的二进制数),中间用"."分隔开. 输入样例: 11001100100101000001010101110010 输出样例: 204.148.21.114 import java.math.BigInteger; import

1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client

 1  Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端口号"就称为socket. 在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接.socket本身有"插座"的意思,因此用来描述网络连 接的一对一关系. TCP/IP协议最早在BSD UNIX上实现,

字符串-06. IP地址转换

1 /* 2 * Main.c 3 * D6-字符串-06. IP地址转换 4 * Created on: 2014年8月19日 5 *******测试通过******** 6 *转载:http://blog.csdn.net/junjieguo/article/details/7392539 7 */ 8 9 10 #include <stdio.h> 11 12 int bin_dec(int x, int n) //自定义函数将二进制数转换为10进制 13 { 14 if(n == 0)

IP地址转换成Long型数字的算法

在应用程序开发中,涉及到IP地址的存储,大部分开发人员都将其存为String(或文本类型).能否将固定格式为m.n.x.y的IP地址转换成 Long型的数字呢?答案是肯定的.在数据库层面,可以直接将结果设置成表的主键,避免IP地址的重复,因为是主键,也就是表的索引了,数据库查找时会更 快. 对于格式为m.n.x.y的IP地址,转换成Long型数字的算法如下: view plain   copy Long  =  * 256 * 256 * m + y 使用Java语言,则这样实现: view p

F5 cookie值与IP地址(二):将IP地址转换成F5 cookie值

简  介 在上一篇中,我们介绍了如何将cookie码转换成IP地址,这次我们将介绍如何将IP地址转换成cookie码.如何上一篇分析清楚了,本篇也很简单. 链接:http://showing.blog.51cto.com/11976328/1841564 转换步骤 下面,我们将以IP地址:192.168.1.1为例: 192.168.1.1->倒置顺序->1 1 168 192->分别转换为16进制->1 1 A8 C0->不够两位的补0->01 01 A8 C0-&g

python整数与IP地址转换 [转]

我们有时会将一个整数与IP地址进行互换,用python代码实现很简单将一个整数如2000000,变为一个IP地址的方式 >>> import socket >>> import struct >>> int_ip = 123456789 >>> ip = socket.inet_ntoa(struct.pack('I',socket.htonl(int_ip))) #int to ip address '7.91.205.21' &g

IP地址转换函数

这些天一直在看<UNP>,觉得有必要对一些东西做一下总结(其实只是抄一抄书),加深一下印象. IP地址转换函数有两组,它们可以在字符串和网络字节序的二进制值之间转换IP地址 适用于IPv4地址的函数 1 #include <arpa/inet.h> 2 3 /* Convert Internet host address from numbers-and-dots notation in CP 4 into binary data and store the result in t

IP 地址转换 inet_addr() inet_ntoa() 笔记

inet_addr()   inet_ntoa() 及其自实现函数self_inet_ntoa() 和 self_inet_addr() 笔记 #include <WINSOCK2.h> #include <iostream> #pragma comment(lib,"WS2_32.LIB") using namespace std; char *self_inet_ntoa(UINT in); ULONG self_inet_addr(const char *