Socket_Internet 命名空间
英特网目前有两种地址格式:1、IPv4(32位地址格式)2、IPv6(128位地址格式)。IPv4的命名空间为PF_INET,IPv6的命名空间则为PF_INET6。
#incldue <sys/socket.h>
int PF_INET
int PF_INET6
Internet 命名空间下的socket地址有以下两个组件:
1、想连接的机器的地址:有几种表示方式,1、Internet Address Formats;2、Host Addresses;3、Host Names
2、端口号
地址和端口号都要遵循一个叫网络字节顺序的标准格式。
Internet Socket Address Formats:
#include <netinet/in.h>
struct sockaddr_in {
sa_family_t sin_family,//指明了使用的socket地址的地址族。在Internet中为AF_INET
struct in_addr sin_addr,//主机的地址(IP地址,或者主机名)
unsigned short int sin_port//端口好
} struct sockaddr_in6 {
sa_family_t sin6_family,
struct in6_addr sin6_addr,
unint32_t sin6_flowinfo, //未实现部分。。。。。。
unit16_t sin6_port,
}
Host addresses和host name:
主机地址指的就是平常所说的ip地址,比如IPv4地址128.52.46.32。IPv6地址
5f03:1200:836f:c100::1。
主机地址的数据类型:IPv4地址占32位,最好使用unit32_t类型或者struct in_addr。
IPv6占128位,使用struct in6_addr。
#include <netinet/in.h>
struct in_addr {
uint32_t s_addr;
}
uint32_t INADDR_LOOPBACK //特指地址127.0.0.1
uint32_t INADDR_ANY //代表任何接入的地址。
uint32_t INADDR_BROADCAST //广播地址
uint32_t INADDR_NONE //标识错误
struct in6_addr
struct in6_addr in6addr_loopback //代表Ipv6的回环地址::1
IN6ADDR_LOOPBACK_INIT //与上等同
struct in6_addr in6addr_any //IPV6常量地址'::'。表示任何接入的地址
IN6ADDR_ANY_INIT //与上等同
每台计算机都可以有一个或多个主机名,比如:www.gnu.org。
对于端口号提供了两个宏
#include <netinet/in.h>
int IPPORT_RESERVED
int IPPORT_USERRESERVED
端口号小于IPPORT_RESERVED保留给特定应用程序或协议。端口号大于IPPORT_USERRESERVED用于显示使用,系统不会自动分配。
如果你的socket未指定地址,系统会自动申请一个介于IPPORT_RESERVED和IPPORT_USERRESERVED之间的端口。
Socket_Internet 命名空间的更多相关文章
- 【.net 深呼吸】细说CodeDom(3):命名空间
在上一篇文章中,老周介绍了表达式和语句,尽管老周没有把所有的内容都讲一遍,但相信大伙至少已经掌握基本用法.在本文中,咱们继续探讨 CodeDom 方面的奥秘,这一次咱们聊聊命名空间. 在开始之前,老周 ...
- C++中的命名空间
一,命名空间(namespace)的基本概念以及由来 1.什么是标识符: 在C++中,标识符可以是基本的变量,类,对象,结构体,函数,枚举,宏等. 2.什么是命名空间: 所谓的命名空间是指标识符的可见 ...
- PHP 面向对象编程和设计模式 (5/5) - PHP 命名空间的使用及名称解析规则
PHP高级程序设计 学习笔记 2014.06.12 命名空间概述 PHP 在 5.3.0 以后的版本开始支持命名空间.什么是命名空间?从广义上来说,命名空间是一种封装事物的方法.在很多地方都可以见到这 ...
- JavaScript权威设计--命名空间,函数,闭包(简要学习笔记十二)
1.作为命名空间的函数 有时候我们需要声明很多变量.这样的变量会污染全局变量并且可能与别人声明的变量产生冲突. 这时.解决办法是将代码放入一个函数中,然后调用这个函数.这样全局变量就变成了 局部变量. ...
- .Net 序列化(去除默认命名空间,添加编码)
1.序列化注意事项 (1).Net 序列化是基于对象的.所以只有实例字段呗序列化.静态字段不在序列化之中. (2)枚举永远是可序列化的. 2.XML序列化时去除默认命名空间xmlns:xsd和xmln ...
- [Yii2.0] 以Yii 2.0风格加载自定义类或命名空间 [配置使用Yii2 autoloader]
Yii 2.0最显著的特征之一就是引入了命名空间,因此对于自定义类的引入方式也同之前有所不同.这篇文章讨论一下如何利用Yii 2.0的自动加载机制,向系统中引入自定义类和命名空间.本文旨在抛砖引玉,如 ...
- Spring 设值注入 构造注入 p命名空间注入
注入Bean属性---构造注入配置方案 在Spring配置文件中通过<constructor-arg>元素为构造方法传参 注意: 1.一个<constructor-arg>元素 ...
- python命名空间
在"python之禅"那几句话中有一句:namespace is a good thing. python对于命名空间的处理非常简单,下面的内容不一定真实,完全是我根据现象推测出来 ...
- thinkphp 命名空间
什么是命名空间?从广义上来说,命名空间是一种封装事物的方法.在很多地方都可以见到这种抽象概念.例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色.具体举个例子,文 ...
随机推荐
- 【30.23%】【codeforces 552C】Vanya and Scales
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 小强的HTML5移动开发之路(42)——HTML4与HTML5文档结构比较
一般来说,人们在书写包括HTML在内的文档时,习惯上按照类似于"章--节--小节"这样的层次结构来进行. 在HTML4中的描述方式: <html> <head&g ...
- [Ramda] Create an Array From a Seed Value with Ramda's unfold
In this lesson we'll look at how you can use Ramda's unfold function to generate a list of values ba ...
- IT咨询服务-客户案例(四):根据图片等素材,动态生成个性化图片
最近,慕名而来一个客户. 客户的目标 网站来一个用户,选择模版,上传图片等素材,生成自定义的图片,或者静态网站,然后分享到社交网站.有点类似于,网上制作名片,选择模版,输入个人信息,生成名片的设 ...
- Android四大组件之Activity--管理方式
1. 概览 Activity的管理有静态和动态两层涵义: 静态是指Activity的代码组织结构,即Application中声明的Activity的集合,这些Activity被组织在一个APK中,有特 ...
- Hive分析窗体函数之NTILE,ROW_NUMBER,RANK和DENSE_RANK
開始,依照顺序,生成分组内记录的序列–比方,依照pnum降序排列.生成分组内每天的pnum名次ROW_NUMBER() 的应用场景许多.再比方,获取分组内排序第一的记录等等. SELECT polno ...
- 【t012】整理书架
Time Limit: 1 second Memory Limit: 32 MB [问题描述] 小明是一个非常喜欢读书的孩子,他有一个特别的书架,书架上摆放着他买的新书.当他决定要阅读某本图书时,他就 ...
- Vue中this的绑定
之前写过一篇文章 ES6与React中this完全解惑 其实Vue也是相同的道理.在Vue的官方文档中提到: 不要在选项属性或回调上使用箭头函数,比如 created: () => consol ...
- 关于JDBC连接数据库时出现的Public Key Retrieval is not allowed错误
问题描述 最近在学习MyBatis框架,参考官方的文档通过配置文件的方式已经实现了通过Configuration配置文件和mapper映射文件访问mysql8数据库,于是想试试不使用XML文件去构建S ...
- C#委托之个人理解
C#委托之个人理解 什么是委托 首先要知道什么是委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西. 如何使用委托 在使用委托的时候,你可以像对待一个类一样对待它.即先 ...