IP地址转换、主机大小端、htonl、ntohl实现

copy

#include <IOSTREAM> //#include <WINSOCK.H> using std;

  • typedef  uint16;
  • unsigned   uint32;
  • // 短整型大小端互换 #define BigLittleSwap16(A)  ((((uint16)(A) & 0xff00) >> 8) | \ // 长整型大小端互换 #define BigLittleSwap32(A)  ((((uint32)(A) & 0xff000000) >> 24) | \ // 本机大端返回1,小端返回0 int {
  • unsigned   i;
  • s[4];
  • }c;
  • (0x12 == c.s[0]);
  • }
  • // 模拟htonl函数,本机字节序转网络字节序   t_htonl(unsigned   h)
  • {
  • checkCPUendian() ? h : BigLittleSwap32(h);
  • }
  • // 模拟ntohl函数,网络字节序转本机字节序   t_ntohl(unsigned   n)
  • {
  • checkCPUendian() ? n : BigLittleSwap32(n);
  • }
  • // 模拟htons函数,本机字节序转网络字节序   t_htons(unsigned   h)
  • {
  • checkCPUendian() ? h : BigLittleSwap16(h);
  • }
  • // 模拟ntohs函数,网络字节序转本机字节序   t_ntohs(unsigned   n)
  • {
  • checkCPUendian() ? n : BigLittleSwap16(n);
  • }
  • //8个二进制(2个十六进制)数转换成十进制数,不含a-f。即00-99的转换    int x)
  • {
  • y;
  • temp;
  • y+=temp*16;
  • y;
  • }
  • //32个二进制(4个十六进制)数转换成十进制数,不含a-f。即0000-9999的转换    void x)
  • {
  • temp1=x%100;
  • y1=transfer_0(temp1);
  • temp2=(x%10000-temp1)/100;
  • y2=transfer_0(temp2);
  • temp3=(x%1000000-temp1-temp2*100)/10000;
  • y3=transfer_0(temp3);
  • temp4=(x%100000000-temp1-temp2*100-temp3*10000)/1000000;
  • y4=transfer_0(temp4);
  • ,y4,y3,y2,y1);
  • //将16进制数数转化成10进制数,一位的0-F。    int x)
  • y=0;
  • (x>= && x<=)
  • {
  • ;
  • y;
  • (x>= && x<=)
  • +10;
  • y;
  • }
  • (x>= && x<=)
  • {
  • +10;
  • y;
  • );
  • //将16进制数数转化成10进制数,八位的00000000-FFFFFFFF。    void x[], n)
  • y0=transfer_0(x[0]);
  • y1=transfer_0(x[1]);
  • y2=transfer_0(x[2]);
  • y3=transfer_0(x[3]);
  • y4=transfer_0(x[4]);
  • y5=transfer_0(x[5]);
  • y6=transfer_0(x[6]);
  • y7=transfer_0(x[7]);
  • ,y0*16+y1,y2*16+y3,y4*16+y5,y6*16+y7);
  • //将16进制数数转化成10进制数,八位的00000000-FFFFFFFF。    void x[])
  • {
  • y1=transfer_0(x[0])*16+transfer_0(x[1]);
  • y2=transfer_0(x[2])*16+transfer_0(x[3]);
  • y3=transfer_0(x[4])*16+transfer_0(x[5]);
  • y4=transfer_0(x[6])*16+transfer_0(x[7]);
  • ,y1,y2,y3,y4);
  • }
  • int  ret;
  • ret = checkCPUendian();
  • (ret == 1)
  • );
  • );
  • 0;
  • }

IP地址转换、主机大小端、htonl、ntohl实现

时间: 2024-10-16 04:18:54

IP地址转换、主机大小端、htonl、ntohl实现的相关文章

网络与主机字节转换函数:htons ntohs htonl ntohl

网络与主机字节转换函数:htons ntohs htonl ntohl 网络字节序: 网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型.操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释.网络字节顺序采用big endian(大端)排序方式. 注:网络字节序转化为主机字节序时,一定要注意是否需要转换.网络字节序是确定的. 大端与小端 大端:低地址存高位 —— 网络字节序/主机字节序 小端:高地址存低位 —— 主机字节序 网络字节序一定是大端的(网络上传输

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上实现,

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

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

四、IP地址转换

IP地址与端口 TCP/IP(传输控制协议/网际协议)不是一个协议,而是一组协议的总称,包括IP.TCP.UDP.ICMP.ARP等.它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据交换格式以及传送方式. IP地址:是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围内惟一的标识符. 一个IP地址主要由两部分组成:网络地址和主机地址. 网络地址由因特网权力机构分配,主机地址由各个网络的管理员统一分配. IP地址编制方案有两种:IPV4和IPV6 IPV4:二进制表示共3

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地址、主机号、网络号、网络地址、广播地址

1.191.172.16.10.33/27 中的/27也就是说子网掩码是255.255.255.224 即27个全1 2.从子网掩码255.255.255.252得出其网络位为30位,所以只有剩下的2位为主机位,主机位全零的为网络地址,主机位全1的为广播地址,剩余的主机号码为主机地址范围 3.公有地址(Public address)由Inter NIC(Internet Network Information Center 因特网信息中心)负责.这些IP地址分配给注册并向Inter NIC提出申

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 *

字符串-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)