精华内容
下载资源
问答
  • 关于socket阻塞与非阻塞情况下的recv、send、read、write返回值.zip
  • read返回值 >0 读取数据的长度 =0 接收到对端发送的FIN,表示对端的写端关闭。 <0 如果errno=EINTR。收到信号并从信号处理函数返回时,慢系统调用会返回并设置errno为EINTR,应该重新调用...write返回值 ...

    read返回值

    >0   读取数据的长度

    =0   接收到对端发送的FIN,表示对端的写端关闭。

    <0   如果errno=EINTR。收到信号并从信号处理函数返回时,慢系统调用会返回并设置errno为EINTR,应该重新调用read。

        如果errno=EAGAIN。表示当前暂时没有数据可读,应该稍后读取。

           其它一般表示出错。

     

    write返回值

    >0   接收数据的长度

    <0   如果errno=EINTR。收到信号并从信号处理函数返回时,慢系统调用会返回并设置errno为EINTR,应该重新调用write。

        如果errno=EAGAIN。可能是缓冲区已满,应该稍后发送。

           其它一般表示出错。

    ps:如果向已经关闭的对端调用write,系统会向程序发送SIGPIPE信号,该信号默认会退出程序,应该捕获该信号。

    转载于:https://www.cnblogs.com/runnyu/p/5054968.html

    展开全文
  • f_write返回值为1,则就是FR_DISK_ERR, /* (1) A hard error occurred in the low level disk I/O layer */ 低级磁盘I/O层中发生硬错误 问题解决方式: 1 更改写扇区函数 2 每次写了之后(f_write)都加一个小...

    f_write返回值为1,则就是FR_DISK_ERR,               /* (1) A hard error occurred in the low level disk I/O layer */

    低级磁盘I/O层中发生硬错误

    问题解决方式:

    1 更改写扇区函数

    2 每次写了之后(f_write)都加一个小延时

    3 单次的传输是不是太大?  传输字节几百的话是没有问题的,现在传输的每次是4000多字节 就会出现这种错误的情况

    4 看看频率最多支持多少,从底往上都要看。SDIO有频率,CPU有主频,速度过快也不行啊,你最好折中速度,比如试试2000,再试试1000,或者3000等等。

    5 重点检查diskio.c文件中的disk_initialize()、disk_status()、disk_read()、disk_write()这几个函数

    6  将 FIL fil; 从函数外拿出,定义为全局变量,即可解决。

    7 确保f_mount已经挂载上了。确保硬件初始化完成了。

    8 每次插入usb都会进行枚举,我们要等到可执行用户程序的时候才进行f_open

    9 一开始时候低速,查询卡信息发现是"SD V2HC",然后将主频从400k提高10MBit时候经常出现FR_DISK_ERR,慢慢降低到1.7MBit时候就FR_OK了

    10 f_write 一直失败  FR_DISK_ERR,回来发现在 在diskio 的 disk_write 操作里要加上卡的状态等待。对的,根据你这个方法能解决FR_DISK_ERR错误,必须要等到SD卡处于TRANSFER的状态才行

    11 移植工程时,FATFS文件和TF卡操作程序需要是同一个工程,FATFS文件不同工程里面的操作不同,我从新更新了原始FATFS程序,问题解决。

    展开全文
  • recv: 阻塞与非阻塞recv返回值没有区分,都是 0接收...阻塞与非阻塞write返回值没有区分,都是 0发送数据大小, 特别:非阻塞模式下返回值  只是阻塞模式下write会阻塞着发送数据,非阻塞模式下如果暂时无法发送
    recv:
    阻塞与非阻塞recv返回值没有区分,都是 <0:出错,=0:连接关闭,>0接收到数据大小,
    特别:非阻塞模式下返回 值 <0时并且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况 下认为连接是正常的,继续接收。
    只是阻塞模式下recv会阻塞着接收数据,非阻塞模式下如果没有数据会返回,不会阻塞着读,因此需要 循环读取。
    write:
    阻塞与非阻塞write返回值没有区分,都是 <0:出错,=0:连接关闭,>0发送数据大小,
    特别:非阻塞模式下返回值 <0时并且 (errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况下认为连接是正常的, 继续发送。
    只是阻塞模式下write会阻塞着发送数据,非阻塞模式下如果暂时无法发送数据会返回,不会阻塞着 write,因此需要循环发送。
    read:
    阻塞与非阻塞read返回值没有区分,都是 <0:出错,=0:连接关闭,>0接收到数据大小,
    特别:非阻塞模式下返回 值 <0时并且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况 下认为连接是正常的,继续接收。
    只是阻塞模式下read会阻塞着接收数据,非阻塞模式下如果没有数据会返回,不会阻塞着读,因此需要 循环读取。
    send:
    阻塞与非阻塞send返回值没有区分,都是 <0:出错,=0:连接关闭,>0发送数据大小,
    特别:非阻塞模式下返回值 <0时并且 (errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况下认为连接是正常的, 继续发送。
    只是阻塞模式下send会阻塞着发送数据,非阻塞模式下如果暂时无法发送数据会返回,不会阻塞着 send,因此需要循环发送。
    展开全文
  • recv: 阻塞与非阻塞recv返回值没有区分,都是 0接收...阻塞与非阻塞write返回值没有区分,都是 0发送数据大小, 特别:非阻塞模式下返回值  只是阻塞模式下write会阻塞着发送数据,非阻塞模式下如果暂时无法发送
    recv:
    阻塞与非阻塞recv返回值没有区分,都是 <0:出错,=0:连接关闭,>0接收到数据大小,
    特别:非阻塞模式下返回 值 <0时并且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况 下认为连接是正常的,继续接收。
    只是阻塞模式下recv会阻塞着接收数据,非阻塞模式下如果没有数据会返回,不会阻塞着读,因此需要 循环读取。
    write:
    阻塞与非阻塞write返回值没有区分,都是 <0:出错,=0:连接关闭,>0发送数据大小,
    特别:非阻塞模式下返回值 <0时并且 (errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况下认为连接是正常的, 继续发送。
    只是阻塞模式下write会阻塞着发送数据,非阻塞模式下如果暂时无法发送数据会返回,不会阻塞着 write,因此需要循环发送。
    read:
    阻塞与非阻塞read返回值没有区分,都是 <0:出错,=0:连接关闭,>0接收到数据大小,
    特别:非阻塞模式下返回 值 <0时并且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况 下认为连接是正常的,继续接收。
    只是阻塞模式下read会阻塞着接收数据,非阻塞模式下如果没有数据会返回,不会阻塞着读,因此需要 循环读取。
    send:
    阻塞与非阻塞send返回值没有区分,都是 <0:出错,=0:连接关闭,>0发送数据大小,
    特别:非阻塞模式下返回值 <0时并且 (errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况下认为连接是正常的, 继续发送。
    只是阻塞模式下send会阻塞着发送数据,非阻塞模式下如果暂时无法发送数据会返回,不会阻塞着 send,因此需要循环发送。
    展开全文
  • read write 返回值

    2012-09-23 20:34:00
    返回值: 如果实际读的字节数<count,返回实际读的字节数; 如果实际fd中字节数>count,返回count. 错误返回-1. 一般正常情况下,返回的就是count,但是有可能由于信号中断或读到文件尾等原因,读的字节数...
  • 简单写了个连接测试,查看下SRT的返回值同TCP有何区别 SRT 只发不收 srt_send返回值-1,链接不断开 srt_getlasterrno返回值为6001(SRT_EASYNCSND) 接收方报错:No room to store incoming packet 发送长度填0 srt...
  • 1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?...(就我目前了解阻塞与非阻塞write返回值没有区分,都是0发送数据大小,特别:返回值 3、阻塞模式下read返回值   非阻塞模式下read返回值 0表
  • 1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?...阻塞与非阻塞write返回值没有区分,都是 0发送数据大小,特别:返回值 3、阻塞模式下read返回 值 非阻塞模式下read返回值 0表示接收到数据。 这2种模
  • 关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 246,970
精华内容 98,788
关键字:

write返回值