http://blog.163.com/xychenbaihu@yeah/blog/static/132229655201121505130366/

Linux网络编程----IP转换函数--inet_addr和inet_ntoa

Linux下IP转换工具::

#Include <sys/types.h>

#include <sys/socket.h>

#include <arpa/inet.h>

strcut sockaddr_in   src;

src.sin_addr.s_addr   =  inet_addr("*.*.*.*");                 //构建网络地址。

printf("%s\n",inet_ntoa(src.sin_addr));             //将网络地址转换成字符串。

注意::

inet_ntoa存在的问题是inet_ntoa的返回值是一个static类型的char *指针,所以会出现问题::

char *a1,a2;

src.sin_addr.s_addr  =  inet_addr("192.168.1.123");

a1   =inet_ntoa(src.sin_addr);

src.sin_addr.s_addr = inet_addr("192.168.1.124");

a2 = inet_ntoa(src.sin_addr);

printf("a1:%s\n",a1);

显示为::         a1:192.168.1.124

printf("a2:%s\n",a2);

显示为:          a2:192.168.1.124

原因是静态的static   char *

Linux网络通信----网络地址构建struct sockaddr_in

Linux下网络编程,一般需要包含的头文件包括:

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#Include <arpa/inet.h>

#include <netdb.h>

#include <unistd.h>

Linux下网络地址有:

struct    sockaddr

{

unsigned  int  sin_family;                  //取值AF_INET;

char   sa_data[14];

}

这种结构不常用,常用的是:

struct    sockaddr_in

{

short int sin_family;                           //取值AF_INET;

unsigned short  int  sin_port;            //取值htons(PORT);

struct in_addr  sin_addr;                   //取值.sin_addr.s_addr = inet_addr("*.*.*.*");

unsigned char sin_zero[8];                //取值bzero(.sin_zero,8)或memset(.sin_zero,0,8);

}

其中:

struct   in_addr

{

unsigned long   s_addr;             //存储IP地址。

}

所以创建一个网络地址::

strcut  sockaddr_in    src;

src.sin_family  = AF_INET;

src.sin_addr.s_addr   =    inet_addr("*.*.*.*");

bzero(src.sin_zero,8);

其中用到了,inet_addr是linux提供的网络编程中使用的IP转换工具。

inet_addr("*.*.*.*");将字符串IP地址转换成网络地址,并且是网络字节序的。

相反的转换工具有inet_ntoa等。

linux 网络地址相关推荐

  1. linux的网络地址配置,教你如何完成Linux网络地址配置

    如果你想了解Linux,了解一些关于Linux的知识.本文为你讲解Linux网络地址配置,希望你能理解Linux网络地址配置,下面就这个问题来详细说说吧. 1.关闭与开启网路端口: 开启81端口: i ...

  2. linux如何配置网卡地址吗,教会你如何完成Linux网络地址配置

    如果你想了解Linux,了解一些关于Linux的知识.本文为你讲解Linux网络地址配置,希望你能理解Linux网络地址配置,下面就这个问题来详细说说吧. 1.关闭与开启网路端口: 开启81端口: i ...

  3. Linux——网络地址临时配置(详细步骤+问题解决)

    配置过程中:所遇到的一些问题及解决思路: (19条消息) Linux中出现RTNETLINK answers: Network is unreachable错误的解决思路(路由增删)_孤城286的博客 ...

  4. Linux网络服务(一)

    2016/10/26 Linux网络地址配置文件OSI七层模型功能第七层:应用层 数据 用户接口,提供用户程序"接口". 第六层:表示层 数据 数据的表现形式,特定功能的实现,如数 ...

  5. 41 | 案例篇:如何优化 NAT 性能?(上)

    上一节,探究了网络延迟增大问题的分析方法,并通过一个案例,掌握了如何用 hping3.tcpdump.Wireshark.strace 等工具,来排查和定位问题的根源. 简单回顾一下,网络延迟是最核心 ...

  6. 正斜杠(/)反斜杠(\)简单区别

    1.正斜杠,一般就叫做斜杠:符号为   "/": 反斜杠     符号为    "\" 2.在Unix/Linux 网络地址中,路径的分隔采用正斜杠" ...

  7. (九)洞悉linux下的Netfilteramp;iptables:网络地址转换原理之DNAT

    网络地址转换:NAT Netfitler为NAT在内核中维护了一张名为nat的表,用来处理所有和地址映射相关的操作.诸如filter.nat.mangle抑或raw这些在用户空间所认为的"表 ...

  8. Linux Kernel TCP/IP Stack — L3 Layer — netfilter 框架 — iptables NAPT 网络地址/端口转换

    目录 文章目录 目录 网络地址转换(NAT) SNAT DNAT 端口映射(PAT) 网络地址转换(NAT) IP 网络有公网与私网的区分,通常内网使用私网 IP,Internet 使用公网 IP,而 ...

  9. Linux网络编程 - 域名(DNS)及网络地址

    一 域名系统 DNS(Domain Name System,域名系统) 是对IP地址和域名进行互相转换的系统,其核心是 DNS 服务器. 1.1 什么是域名 提供网络服务的服务器端也是通过IP地址区分 ...

最新文章

  1. souce insight中文出现乱码
  2. 关于jsp页面传值乱码问题
  3. 笔记-项目进度管理-控制进度
  4. mysql的联表查询和去重复数据
  5. spy-debugger 前端调试工具
  6. 基于Django的博客系统
  7. OS笔记047代理传值和block传值
  8. Java IO编程全解(六)——4种I/O的对比与选型
  9. c++构造函数分类说明
  10. 数据结构(郝斌课程内容概述)
  11. Python PDF转图片 Word
  12. centos php ioncube_CentOS 7安装ionCube Loader为php解密组件的方法
  13. 啦啦啦啦啦_开放组织读书俱乐部:啦啦队长如何设定方向
  14. 跑语义分割程序时报错
  15. 在VMware中安装红帽Linux系统
  16. e代驾——打造代驾服务标准化平台
  17. 入门科普|Python和C/C++等有何区别?
  18. css如何实现菱形背景图片,使用CSS 实现菱形图片,斜条纹背景
  19. bat文件注册成服务
  20. 微信小程序的冥冥中拥有的小细节

热门文章

  1. java set 接口_【Java提高十七】Set接口集合详解
  2. gps有几个轨道面_嫦五“一脚刹车”,进了环月轨道
  3. Npm如何升级package.json
  4. win8.1 php mysql,win8.1(64位) apache2.4.3+php5.6.3+mysql5.6安装
  5. html5 coverflow,使用CSS+JS帮你实现苹果cover flow效果
  6. gpio模拟pwm_模拟智能台灯
  7. 【转】自然语言系列学习之表示学习与知识获取(八)利用远程监督多实例的关系抽取
  8. Hadoop报错AccessControlException: Permission denied: user=vincent, access=WRITE, inode=/:iie4bu:supe
  9. 钱穆的中学读书事(作者王国华)
  10. 华为看片牛?真香!那就送你一台试试,可折现!