文件共享项目
来源:互联网 发布:淘宝国际版apk 编辑:程序博客网 时间:2024/06/16 08:53
知识点:
系统调用与C语言运行时库的区别:
一、概念
系统调用:运行在用户空间的应用程序向操作系统内核请求某些服务的调用过程,系统调用为用户程序与操作系统提供了接口,系统调用一般都在系统内核态执行,系统调用的移植差,因为他没有考虑平台的差异性;open,write,semget,semopt,
C语言运行时库:程序员们自己开发的,具有一些功能的函数集通过调用库(动态库,静态库)向程序员提供功能性的调用,他的可移植性好一点。printf,scanf,malloc
文件描述符就绪的条件,哪些条件下文件是可读的,可写,或者异常呢?
下列情况下socket可读:
(1)socket 的接受缓存区的字节数大于或等于低水位标志SO_RCVLOWAT,我们可以无阻塞的读此时的socket,并且读操作的返回为0;
(2)socket上有新的连接请求;
(3)当socket上有里的错误的时候,可以通过getsockopt来读取和清楚该错误;
下列情况socket可写:
(1)socket的发送缓存区的可用字节数大于或者等于他的低水位标志SO_SNDLOWAT,此时我们可以写数据;
(2)socket的写操作被关闭。对写操作关闭的socket执行写操作将会触发个SIGPIPE信号。
(3)当socket上有里的错误的时候,可以通过getsockopt来读取和清楚该错误;
(4)socket使用非阻塞的connect连接之后;
二、函数说明
有很多方法来获取和设置影响套接字的选项:
· getsockopt和setsockopt函数
· fcntl函数,是把套接字设置为非阻塞式I/O型或者信号驱动式I/O型以及设置套接字属主的POSIX的方式
· ioctl函数
这里只讨论getsockopt和setsockopt函数
GETSOCKOPT(2) Linux Programmer's Manual GETSOCKOPT(2)NAME
getsockopt, setsockopt - get and set options on sockets
SYNOPSIS
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
int getsockopt(int sockfd, int level, int optname,
void *optval, socklen_t *optlen);
int setsockopt(int sockfd, int level, int optname,
const void *optval, socklen_t optlen);
返回值:若成功返回0,若出错返回-1
参数说明:
其中sockfd必须指向一个打开的套接字描述符,level(级别)指定系统中解析选项的代码或为通用套接字代码,或为某个特定于协议的代码(例如IPv4、IPv6、TCP或SCTP)
optval是一个指向某个变量(*optval)的指针,setsockopt从*optval中取得选项代设置的新值,getsockopt则把已获取的选项当前值存放到*optval中。*optval的大小由最后一个参数指定。
else if(fds[i].revents & POLLERR) 89 { 90 printf("get an error from %d\n",fds[i].fd); 91 char errors[100]; 92 memset(errors,'\0',100); 93 socklen_t length = sizeof(errors); 94 if(getsockopt(fds[i].fd,SOL_SOCKET,SO_ERROR,&errors,&length)< 0) 95 { 96 printf("get socket option failed\n"); 97 } 98 continue; 99 }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 文件共享项目
- iOS项目共享头文件
- Python项目9:文件共享2
- 项目9:文件共享2--GUI版本
- vc6.0的项目出现 .opt无法访问文件,违背共享
- python项目练习九:文件共享2-GUI版本
- python项目练习九:文件共享2-GUI版本
- Python项目8:使用XML-RPC进行文件共享
- 项目八:使用XML-RPC进行文件共享
- python项目练习九:文件共享2-GUI版本
- python28章 项目9文件共享GUI版本
- 共享文件
- 文件共享
- 共享文件
- 文件共享
- 文件共享
- 文件共享
- 文件共享
- spring 拦截器 链
- spring boot应用启动原理分析
- 枚举类型在游戏中实战应用
- Rxjava
- java实现HMACSHA256加密签名
- 文件共享项目
- js: 从setTimeout说事件循环模型
- IntelliJ IDEA----常用快捷键
- C++中的“error:LNK2005 已经在*.obj中定义”异常
- 添加遮罩时禁止滚屏
- Express + Mongoose 基础使用
- VM虚拟机游戏多开防检测 游戏不能登录处理详解
- Kafka+Influxdb+Grafana实现灵活集群服务监控
- 爬取电影天堂并存入数据库