Linux 网络基础和Socket
来源:互联网 发布:solaris和linux的区别 编辑:程序博客网 时间:2024/06/04 01:25
一、TCP/ IP 协议
1、TCP/IP 协议是互联网基础
2、OSI 参考模型与TCP/IP 参考模型
二、套接字的分类
(1)、流式套接字(SOCK_STREAM)
流式的套接字可以提供可靠的、面向连接的通讯流。它使用了TCP协议。TCP 保证了数据传输的正确性和顺序性。
(2)、数据报套接字(SOCK_DGRAM)
数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错。使用数据报协议UDP协议。
(3)、原始套接字
原始套接字允许对低层协议如IP或ICMP直接访问,主要用于新的网络协议实现的测试等。
三、基于流式套接字的编程流程
四、IO 模式
有5种IO 模式:阻塞I/O,非阻塞I/O,I/O复用(select和poll),信号驱动I/O,异步I/O
五、select函数
select函数:这个函数允许进程指示内核等待多个事件中的任一个发生,并仅在一个或多个事件发生或经过某指定的时间后才唤醒进程。
•包含头文件<sys/select.h><sys/socket.h>
•功能:提供了即时响应多个套接的读写事件
•原型: int select(int maxfdp1,fd_set *readset,fd_set *writeset,fd_set *except,conststructtimeval *timeout);
•参数
–maxfdp1:等待最大套接字值加1
–readset:要检查读事件的容器
–writeset:要检查写事件的容器
–timeout:超时时间
•返回值:返回触发套件接字的个数
structtimeval{
longtv_sec; //秒
longtv_usec;//微秒
};
•timeout参数有三种可能
–永远等待下去:仅在有一个描述字准备好I/O时才返回,为此,我们将timeout设置为空指针
–等待固定时间:在有一个描述字准备好I/O是返回,但不超过由timeout参数所指timeval结构中指定的秒数和微秒数
–根本不等待:检查描述字后立即返回,这称为轮询。定时器的值必须为0
六、poll 模型
•包含头文件<poll.h>
•功能:与select函数功能相同
•原型: int poll(struct pollfd *fdarray,unsigned long nfds,int timeout);
•参数
–fdarray是一个pollfd的机构体数组用来表示表示文件描述符的监视信息
–nfds参数给出了要监视的描述符数目
–timeout参数是一个用豪秒表示的时间,是poll在返回前没有接收事件是应等待的时间,如果timeout的值为-1,poll就永远不会超时.如果整数值为32个比特,那么最大超时周期约为30分钟
•返回值:准备好描述字的个数,0-超时,1-出错
•fd是文件描述符值
•event和revents是通过代表各种事件的标准符进行逻辑或运算构建而成的
structpollfd
{
intfd;
short events; //感兴趣的事件
shortrevents; //fd上触发的事情
}
0 0
- Linux 网络基础和Socket
- Linux网络编程基础--socket常用选项
- java基础之 网络和socket
- socket 基础(Linux网络编程基础API)
- 【原创】《Linux高级程序设计》杨宗德著 - Linux Socket网络编程基础 - BSD Socket网络通信编程
- Socket网络编程基础
- socket网络编程基础
- SOCKET网络编程基础
- Socket网络编程基础
- Java基础:网络+socket
- 网络编程-socket基础
- socket网络编程基础
- socket网络编程基础
- socket网络编程基础
- 网络编程基础--Socket
- socket网络编程基础
- Socket网络编程基础
- 【原创】《Linux高级程序设计》杨宗德著 - Linux Socket网络编程基础 - 网络通信基础
- Update和LateUpdate的区别
- 三种循环的执行机制(for while do while)
- Android中ViewPager + Fragment使用ButterKnife注解时出现空指针NullPoint的情况
- 处理collection的点击事件与其他事件冲突的方法
- bzoj 1571 [Usaco2009 Open]滑雪课Ski
- Linux 网络基础和Socket
- 右左法则
- IDEA自动编译不用每次make
- JS中发送验证码的代码片段
- 找资料
- 深入理解Android之Gradle
- each遍历一二级
- iOS “No such file or directory” 报错解决
- UDP、TCP和SCTP