一、 下列四个条件中的任何一个满足时,socket准备好读:
1.socket接收缓冲区中已经接收的数据的字节数大于等于socket接收缓冲区低潮限度的当前值;对这样的socket的读操作不会阻塞,并返回一个大于0的值(即:准备好读入的数据的字节数).我们可以用socket选项SO_RCVLOWAT来设置此低潮限度,对于TCP和UDPsocket,其缺省值为1;
2.连接的读这一半关闭(即:接收到对方发过来的FIN的TCP连接).对于这样的socket的读操作将不阻塞,并且返回0(即:文件结束符,FIN包体长度为0字节);
3.socket是一个用于监听的socket,并且已经完成的连接数为非0.这样的soocket处于可读状态,是因为socket收到了对方的connect请求,执行了三次握手的第一步:对方发送SYN请求过来,使监听socket处于可读状态;正常情况下,这样的socket上的accept操作不会阻塞;
4.有一个socket有异常错误条件待处理.对于这样的socket的读操作将不会阻塞,并且返回一个错误(-1),errno则设置成明确的错误条件.这些待处理的错误也可通过指定socket选项SO_ERROR调用getsockopt来取得并清除;
二、 下列三个条件中的任何一个满足时,socket准备好写 :
1.socket发送缓冲区中的可用空间字节数大于等于socket发送缓冲区低潮限度的当前值,且(i):socket已连接(TCP socket),或者(ii):socket不要求连接(如:UDP socket).这意味着,如果我们将这样的socket设置为非阻塞模式,写操作将不会阻塞,并且返回一个正值(如:由传输层接收的字节数).我们可以用socket选项SO_SNDLOWAT来设置此低潮限度,对于TCP和UDP socket,其缺省值一般是2048Bytes;
2.连接的写这一半关闭.对于这样的socket的的写操作将产生信号SIGPIPE;
3.有一个socket异常错误条件待处理.对于这样的socket的写操作将不会阻塞并且返回一个错误(-1),errno则设置成明确的错误条件.这些待处理的错误也可以通过指定socket选项SO_ERROR调用getsockopt函数来取得并清除;
socket可读可写
时间: 2024-10-10 02:59:29
socket可读可写的相关文章
多个流,简短的读和写
Boost::Asio中的许多I/O对象是流导向的,这意味着: @没有消息边界,在传输的数据是一个连续的字节序列 @读或者写传输的字节可能比请求更小,这就是被称作简短的读或者写 提供流定向模型的对象一个或者多个下列类型的必要条件: SyncReadStream,使用成员函数read_some()执行同步的读操作 AsyncReadStream,使用成员函数async_read_some() 执行异步读操作 SyncWriteStream, 使用成员函数write_some()执行一个同步的写操作
WPF程序中App.Config文件的读与写
原文:WPF程序中App.Config文件的读与写 WPF程序中的App.Config文件是我们应用程序中经常使用的一种配置文件,System.Configuration.dll文件中提供了大量的读写的配置,所以它是一种高效的程序配置方式,那么今天我就这个部分来做一次系统性的总结. App.Config文件是系统默认的应用程序配置文件,在我们使用后进行编译时会生成"程序集名称+.exe.config"文件,其本质上也是一个XML文件,在我们的应用程序中添加应用程序配置文件后,默认生成下
[Android L]SEAndroid开放设备文件结点权限(读或写)方法(涵盖常用操作:sys/xxx、proc/xxx、SystemProperties)
温馨提示 建议你先了解一下上一篇博文([Android L]SEAndroid增强Androd安全性背景概要及带来的影响)所讲的内容,先对SEAndroid窥个全貌,然后再继续本节内容. 1 现象描述 基于Android L版本源码环境进行开发时,根据项目需求,APP层需要操作sys/xxx 或 proc/xxx下面的文件结点,但是会报出以下权限异常,无法直接操作这些结点 LedLightFileUtil( 4671): java.io.FileNotFoundException: /sys/c
@property和@x.setter和@x.deleter表示可读可写可删除
@property可以将python定义的函数"当做"属性访问,从而提供更加友好访问方式,但是有时候setter/deleter也是需要的.1>只有@property表示只读.2>同时有@property和@x.setter表示可读可写. 3>同时有@property和@x.setter和@x.deleter表示可读可写可删除. [python] view plain copy class student(object): #新式类 def __init__(sel
Python open()函数文件打开、读、写操作详解
一.Python open()函数文件打开操作 打开文件会用到open函数,标准的python打开文件语法如下:open(name[,mode[,buffering]])open函数的文件名是必须的,而模式和缓冲参数都是可选的.比如说有个a.txt的文本文件,存放在c:\text下,那么你要打开它可以这样操作:>>>x = open(r 'c:\text\a.txt')用读的模式打开这个路径下的对应文本文件,如果要打开对像不存在,程序会报错. 二.open()函数文件打开模式参数常用值有
Linux文件和目录的读、写、执行权限总结
注意:root用户不受文件和目录权限的控制,即拥有任意权限! 文件的读.写.执行权限说明: 可读r:表示具有读取文件内容的权限 可写w:表示具有修改文件内容的权限(删除文件或修改文件名等权限是受上级父目录的权限控制,和文件本身权限无关) 可执行x:表示具有执行文件的权限(文件本身要能够执行,普通用户还需要有r的权限) 目录的读.写.执行权限说明: 可读r:表示具有浏览目录里内容的权限,即ls(需要有x权限配合,如无x权限,则只能显示文件或目录名,文件属性等显示为问号) 可写w:表示具有创建.删除
Ubuntu下提示U盘没有些权限的只能读不能写
在Windows下,U盘能够正常地读写文件(能复制粘贴),但发现有个文件打不开.然后在LInux下,U对U盘只能读不能写.提示:Read only system. 参考:https://bugs.launchpad.net/ubuntu/+bug/228608 1,# tail -f /var/log/syslog 查看文件系统的动态信息 May 19 21:31:28 controller kernel: [284792.451452] FAT-fs (sdb1): Volume was
读、写SD上的文件请按如下步骤进行
1.调用Environment的getExternalStorageState()方法判断手机上是否插入了SD卡,并且应用程序具有读写SD卡的权限.例如使用如下代码//Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)2.调用Environment的getExternalStorageDirectory()方法来获取外部存储器,也就是SD卡的目录.3.使用FileInputStream.FileOutpu
关于读、写SD卡的操作
1.点击按钮将assets文件夹中的内容复制到SD卡中. private void copyToSD() { // 检测SD卡是否挂载 Environment.MEDIA_MOUNTED 表示被挂载 // Environment.getExternalStorageState() 将返回sd卡的状态 if(! Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { Toast.makeText(thi