ping源码代阅读(二) 基本知识介绍
2011-08-02 00:02
411 查看
我们先把在ping代码中的需要的知识学习下,然后我们在阅读代码部分只需要把流程讲清楚就可以了。
网络程序之间的连接需要五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。
结合上篇中的流程图,把用到的api介绍下。
1.domain协议族
AF_INET:等同于PF_INET,(Internet协议族,也就是TCP/IP)
2.type
SOCK_STREAM:流式套接字,面向连接和可靠的通信类型
SOCK_DGRAM:数据套接字,非面向连接和不可靠的通信类型
SOCK_RAW:原始套接字,用来直接访问IP协议
3. IPPROTO_ICMP
这里指定了通信协议,我们可以通过返回值套接字号可进行下一步操作。
将套接口和机器上一定的端口号绑定在一起.包括了本机地址和本地端口地址。
optname:选项名称
optval(选项值):指向变量的指针。
用来接收远程主机经指定的socket传来的数据。参数s为已建立好连线的socket,如果利用UDP协议则不需经过连线操作。参数msg指向欲连线的数据结构内容,参数flags一般设0
主要的函数只有这几个。
网络程序之间的连接需要五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。
结合上篇中的流程图,把用到的api介绍下。
A.int socket(int domain, int type, int protocol);
icmp_sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);用来建立一个新的socket,也就是向系统注册,通知系统建立一通信端口。1.domain协议族
AF_INET:等同于PF_INET,(Internet协议族,也就是TCP/IP)
2.type
SOCK_STREAM:流式套接字,面向连接和可靠的通信类型
SOCK_DGRAM:数据套接字,非面向连接和不可靠的通信类型
SOCK_RAW:原始套接字,用来直接访问IP协议
3. IPPROTO_ICMP
这里指定了通信协议,我们可以通过返回值套接字号可进行下一步操作。
B.int bind(int socket, struct sockaddr *my_addr, int addrlen);
bind(icmp_sock, (struct sockaddr*)&source, sizeof(source))将套接口和机器上一定的端口号绑定在一起.包括了本机地址和本地端口地址。
struct sockaddr_in{ short sin_family; /*AF_INET*/ u_short sin_port; /*16位端口号,网络字节顺序*/ struct in_addr sin_addr; /*32位IP地址,网络字节顺序*/ char sin_zero[8]; /*保留*/ }
C. int connect(int sockfd, struct sockaddr *serv_addr,int addrlen);
serv_addr是包含远端主机IP地址和端口号的指针;D. int setsockopt ( int sockfd, int level, int optname, const void * optval, socklen_t *opteln )
lever:类型
IPPROTO_IP:IPv4套接口optname:选项名称
optval(选项值):指向变量的指针。
E.int recvmsg(int sockfd, struct msghdr *msg, int flags);
cc = recvmsg(icmp_sock, &msg, polling);用来接收远程主机经指定的socket传来的数据。参数s为已建立好连线的socket,如果利用UDP协议则不需经过连线操作。参数msg指向欲连线的数据结构内容,参数flags一般设0
主要的函数只有这几个。
相关文章推荐
- ping记录路由选项_RR基本知识介绍
- 4 Handler相关类——Live555源码阅读(一)基本组件类
- Qualcom QMI系列-基本知识介绍
- spring整合ehcache 注解实现查询缓存,并实现实时缓存更新或删除 写在前面:上一篇博客写了spring cache和ehcache的基本介绍,个人建议先把这些最基本的知识了解了才能对今天
- OPC基本知识介绍——什么是OPC
- jquery2.0.3动画(animate)源码解读与javascript基本知识学习一
- spark源码阅读笔记RDD(一)RDD的基本概念
- Oracle认证基本知识介绍
- 视频监控源码阅读知识基础
- 苹果示例源码阅读:SimplePing(1)
- 自动挡车挡位的基本知识介绍
- Spark源码阅读笔记:Spark集群中各个角色介绍
- 《C++ primer》英文第五版阅读笔记(二十五)——函数基本知识
- 5 HandlerIterator处理程序迭代器类——Live555源码阅读(一)基本组件类
- Qualcom QMI系列-基本知识介绍
- jquery源码阅读知识储备(7)JS函数中的argument属性
- lite源码阅读(三)基本内容
- Hibernate 知识记录 1--hibernate基本介绍
- QUnit源码阅读(2):test基本执行流程
- 数据结构01_数据结构基本知识介绍