linux c 网络编程:用域名获取IP地址或者用IP获取域名 网络地址转换成整型 主机字符顺序与网络字节顺序的转换

用域名获取IP地址或者用IP获取域名

#include<stdio.h>
#include<sys/socket.h>
#include<netdb.h>
int main(int argc,char **aggv)
{
        struct hostent *host;
        char hostname[]="www.163.com";
        char hostname2[]="www.baidu.com";
        struct in_addr in;
        struct sockaddr_in addr_in;
        int h_errno;
        char addr[]="202.108.249.216";

        if((host=gethostbyname(hostname))!=NULL)
                {
                        memcpy(&addr_in.sin_addr.s_addr,host->h_addr,4);
                        in.s_addr=addr_in.sin_addr.s_addr;
                        printf("Domain name : %s \n",hostname);
                        printf("IP length is: %d \n",host->h_length);
                        printf("Type : %d \n",host->h_addrtype);
                        printf("IP : %s \n",inet_ntoa(in));

                }

        if(((host=gethostbyaddr(addr,sizeof(addr),AF_INET)))!=(struct hostnet *)NULL)
        {
                memcpy(&addr_in.sin_addr.s_addr,host->h_addr,4);
                        in.s_addr=addr_in.sin_addr.s_addr;
                        printf("\n---------------------\n");
                        printf("Domain name : %s \n",hostname);
                        printf("IP length is: %d \n",host->h_length);
                        printf("Type : %d \n",host->h_addrtype);
                        printf("IP : %s \n",inet_ntoa(in));
        }
        return 0;
}

#include<stdio.h>
#include<netdb.h>
#include<arpa/inet.h>
int main()
{
        int i ;
        for(i=0;i<6;i++)
        printf("%d  %s \n",i,hstrerror(i));//捕获错误编号

        char cp[]="192.168.0.84";
        printf("%ld\n",inet_addr(cp));
//将网络地址转换成整型

struct in_addr ip; ip.s_addr=16885952; printf("%s\n",inet_ntoa(ip));

//将整型转换成网络地址

long local; int port; local=123456; port=1024; printf("net: %d\n",htonl(local));//主机字符顺序与网络字节顺序的转换 printf("net: %d\n",htonl(port)); printf("local: %d\n",ntohl(htonl(local)));
printf("local: %d\n",ntohl(htonl(port))); return 0;}


linux c 网络编程:用域名获取IP地址或者用IP获取域名 网络地址转换成整型 主机字符顺序与网络字节顺序的转换

时间: 2024-12-25 14:57:54

linux c 网络编程:用域名获取IP地址或者用IP获取域名 网络地址转换成整型 主机字符顺序与网络字节顺序的转换的相关文章

【linux高级程序设计】(第十三章)Linux Socket网络编程基础

IP地址定义: struct in_addr{ __u32 s_addr; }; in_addr_t  inet_addr (__const char * __cp) :把点分十进制IP地址字符串转换为32位IP地址(网络存储顺序). in_addr_t inet_network (__const char * __cp) :把点分十进制IP地址字符串转换为32位IP地址(主机字节顺序). char * inet_ntoa (struct in_addr_in) :把32位网络字节顺序的IP地址

Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip

获取本地 ip 地址,mac,通过域名获取对应的 ip, 是网络编程可能遇到的比较常见的操作了,所以总结如下(封装了3个函数), 直接上代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <unistd.h> #include <netdb.h> #include <net/if.h> #inc

linux C 网络编程基础

TCP/IP基础 UDP提供无连接服务 UDP的数据格式: #ifdef __FAVOR_BSD struct udphdr { u_int16_t uh_sport; /* source port */ u_int16_t uh_dport; /* destination port */ u_int16_t uh_ulen; /* udp length */ u_int16_t uh_sum; /* udp checksum */ }; #else struct udphdr { u_int1

linux socket网络编程 常用函数及头文件

转自:http://blog.chinaunix.net/u3/102500/showart_2065640.html 一 三种类型的套接字: 1.流式套接字(SOCKET_STREAM) 提供面向连接的可靠的数据传输服务.数据被看作是字节流,无长度限制.例如FTP协议就采用这种. 2.数据报式套接字(SOCKET_DGRAM) 提供无连接的数据传输服务,不保证可靠性. 3.原始式套接字(SOCKET_RAW) 该接口允许对较低层次协议,如IP,ICMP直接访问. 二 基本套接字系统调有有如下一

关于网络编程中MTU、TCP、UDP、IP

名词解释: MTU(Maxium Transmission Unit)最大传输单元 TCP (Transmission Control Protocal)传输控制协议 UDP (Usage Datagram Protocal)用户数据报协议 IP (Internet Protocal) 因特网协议 TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层(TCP/IP是一个协议簇,并不是代表TCP协议和IP协议) 以太网(Ethemet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传

WINSOCK RESET解决只能通过IP地址访问目的地址,而域名无法访问的问题。

今天遇到一个问题:一台电脑能访问IP地址,却不能通过网页解析域名(输入IP正常访问). 排错:1.检查dns,没问题,因为别的电脑在用 2. NSLOOKUP ,dns能解析出域名和ip,确定了DNS没事 其实我是第一次遇见这故障,只能借助BAIDU大神了.通过搜索发现原来有可能是winsock被篡改或错误造成的.随执行:"NETSH WINSOCK RESET "  命令进行重置并重启. 重启后发现一切正常可访问网页.问题解决. 此命令还适用于:无法获得IP地址.获得ip显示黄叹号.

PHP获取IP地址及根据IP判断城市实现城市切换或跳转

PHP获取IP地址 这个比较简单了,利用PHP自带函数就可以了,PHP中文手册看一下,都有现成的例子,就不过多说明了,直接上代码,A段: ? <? //PHP获取当前用户IP地址方法 $xp_UserIp = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $xp_UserIp = ($xp_UserIp) ? $xp_

浮动IP地址(Float IP)与 ARP欺骗技术

浮动IP地址: 一个网卡是可以添加多个IP的. 就是多个主机工作在 同一个集群中,即两台主机以上.每台机器除了自己的实IP外,会设置一个浮动IP,浮动IP与主机的服务(HTTP服务/邮箱服务)绑在一起的.即应用服务在哪台机器上启动,浮动IP也在这台机器上激活,这台机器看上去就有两个IP地址.对于客户端它只需访问浮动IP即可. 即使主机端的机器由于故障发生切换,客户端只要连接上浮动IP,就可以找到主机端的服务. 好处就是一旦其中一台机器不能工作了,可以很快的将服务切换到另外一台主机上.提高系统的冗

DNS反射放大攻击分析——DNS反射放大攻击主要是利用DNS回复包比请求包大的特点,放大流量,伪造请求包的源IP地址为受害者IP,将应答包的流量引入受害的服务器

DNS反射放大攻击分析 摘自:http://www.shaojike.com/2016/08/19/DNS%E6%94%BE%E5%A4%A7%E6%94%BB%E5%87%BB%E7%AE%80%E5%8D%95%E5%88%86%E6%9E%90/ 简介 DNS反射放大攻击主要是利用DNS回复包比请求包大的特点,放大流量,伪造请求包的源IP地址为受害者IP,将应答包的流量引入受害的服务器. 简单对比下正常的DNS查询和攻击者的攻击方式: 正常DNS查询:源IP地址 -–DNS查询--> DN