在日常使用,我们更多的使用十进制字符串表示IP地址,比如192.169.130.66,而不是记忆32位的IP地址(关键是太长了记不住呀),使用字符串IP更为方便,可读性也更好。

但是根据上述in_addr定义,网络编程中需要的是网络字节序表示的IP地址,因此需要有函数能相互转换十进制字符串和网络字节序整数表示的IP地址。

函数的头文件以及定义如下:

#include

in_addr_t inet_addr( const char *string); /* 将字符串IP地址转换为网络字节序整数表示的IP地址 */

char *inet_ntoa( struct in_addr in); /* 将网络字节序整数表示的IP地址转换为字符串IP地址 */

如果IP地址合法,inet_addr函数可以成功转换为对应网络字节序;如果IP地址非法,那么inet_addr返回的值为INADDR_NONE(表示无效的结果)。

其中in_addr_t一般为32位的unsigned in,表示网络字节序。

写个程序测试下上述函数:

#include

#include // inet_addr

int main()

{

const char *string1 = "192.168.130.60";

const char *string2 = "192.168.130.256"; // 非法IP,范围为0~255,

in_addr_t network_address1 = inet_addr(string1);

if (network_address1 == INADDR_NONE) {

printf("错误");

} else {

printf("网络字节序为:%#x\n", network_address1);

}

in_addr_t network_address2 = inet_addr(string2);

if (network_address2 == INADDR_NONE) {

printf("错误");

} else {

printf("网络字节序为:%#x\n", network_address2);

}

return 0;

}

在右侧建立个c文件,测试上述转换函数。

ip字符串转换 linux,Linux网络编程入门相关推荐

  1. Linux网络编程 入门

    Linux网络编程入门 (转载) (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍 客户端和服务端          网络程序和普通的程序有一个最大的区别是网络程序是由两个 ...

  2. 【网络编程入门】使用socket在Linux下实现即时通信软件

    使用socket在Linux下实现即时通信软件 在前一篇文章中讲到了如何使用winsock:[网络编程入门]在C++中使用Windows TCP Sockets,也算是勉强入门了吧,接下来自己写一下在 ...

  3. Linux C网络编程基础

    目录 Linux套接字结构定义 Linux C的网络基础操作函数 字节顺序转换函数族 IP地址转换函数族 域名转换函数 Linux网络套接字操作函数 创建套接字描述符函数 绑定套接字函数 建立连接函数 ...

  4. 【Linux】网络编程三:TCP通信和UDP通信介绍及代码编写

    参考连接:https://www.nowcoder.com/study/live/504/2/16. [Linux]网络编程一:网络结构模式.MAC/IP/端口.网络模型.协议及网络通信过程简单介绍 ...

  5. linux和网络编程笔记

    第一部分.章节目录 3.4.1.程序的开始和结束 3.4.2.进程环境 3.4.3.进程的正式引入 3.4.4.fork创建子进程 3.4.5.父子进程对文件的操作 3.4.6.进程的诞生和消亡 3. ...

  6. linux系统/网络编程

    经典数据: APUE:unix环境高级编程3版 linux系统编程手册 德 linux系统编程 oreily unix内核源码剖析 日 windows核心编程 linux系统开发模式: ssh远程登录 ...

  7. Linux下网络编程

    Linux下网络编程初步 Linux以其源代码公开闻名于世,并以其稳定性和可靠性雄霸操作系统领域,在网络应用技术方面使用得更加广泛.很久以来它就是Windows的重要对手之一.随着网络时代的来临,Li ...

  8. 基于Linux的网络编程——网络聊天程序

    网络聊天程序是目前应用极为广泛的一种网络软件,对于方便人们的交流沟通非常有效,同时,作为一种典型的网络应用,编写网络聊天程序是学习基于Linux的网络编程的有效方法. 结合任务需求设计该程序,程序采用 ...

  9. Linux原始网络编程,Linux操作系统网络编程 原始套接字 (1)

    Linux操作系统网络编程--原始套接字 (1) http://soft.zdnet.com.cn/software_zone/2007/1020/568223.shtml 我们在前面已经学习过了网络 ...

  10. LINUX之网络编程j简述

    一.TCP.IP概述 1.tcp/ip 模型 4 层 应用层{ http 超文本传输协议  ftp 文件传输协议  telnet 远程登录  ssh 安全外壳协议  stmp 简单邮件发送.pop3 ...

最新文章

  1. 【有图有真相】静态NAT、动态NAT、PAT、端口映射的详细配置过程
  2. 主从mysql replication 集群的sharding memcache集群使用consistent hash
  3. windows7出现MTP usb设备驱动安装问题解决方法
  4. 【渝粤教育】广东开放大学 土地力学与地基基础 形成性考核 (32)
  5. 什么linux系统是中文的,什么是Linux系统
  6. Analytics API and Customer Data Platform | Segment
  7. Maven常用命令-创建Java项目
  8. 如何用管程实现生产者消费者问题?
  9. linux php 网站计数器,PHP图形数字计数器的实现
  10. Asp.net系列--基础篇(二)
  11. CentOS 7.x 安装教程、硬盘分区、LVM、网络配置、软件源配置、制作USB Disk、U盘安装、网络安装...
  12. 【C/C++学习笔记】C++11 random 随机数(TR1)
  13. 关于vray5.2怎么关闭日志窗口
  14. Kvm与webvirtmgr虚拟化安装
  15. 迅雷7 down.php,帝国CMS教程:教你如何添加迅雷下载
  16. 6-7 拆分实数的整数与小数部分 (15 分)
  17. Android 仿QQ可展开的分组列表控件(ExpandableListview)的使用
  18. 合并报表软件怎么完成表格合并?
  19. .aspx文件和.aspx.cs文件的区别与联系
  20. OSChina 周四乱弹 —— 每次我穿短裙的时候

热门文章

  1. android studio json插件_热门Android Studio 插件,这里是Top 20
  2. python中面向对象的特殊成员_Python面向对象特殊成员
  3. java testng 源代码_根据测试用例的java源码自动生成TestNG的XML文件
  4. Docker-compose 安装Minio 最新版本
  5. 使用IntelliJ IDEA 2020 高效开发 springboot项目
  6. python3-numpy np.nditer 迭代数组、np.nditer修改数组、np.nditer广播迭代
  7. JavaScript-初识jQuery及公式
  8. pythonrgb高精度浮点运算类型_python实现RGB字符串,按24位对齐后输出对应Integer行数字...
  9. python制作远程桌面控制_Python 远程桌面协议RDPY简介
  10. wds linux,linux 无线组网方式 WDS功能