socket 读写方法

技术

  • socket本地通信
函数定义:ssize_t read(int fd, void * buf, size_t count);

函数说明:read()会把参数fd所指的文件传送count 个字节到buf 指针所指的内存中。

返回值:返回值为实际读取到的字节数, 如果返回0, 表示已到达文件尾或是无可读取的数据。若参数count 为0, 则read()不会有作用并返回0。

注意:read时fd中的数据如果小于要读取的数据,就会引起阻塞。

  • 关于read()函数在socket的行为 翻自
https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.bpxbd00/rtrea.htm
#define_POSIX_SOURCE
#include <unistd.h>

ssize_t read(int fs, void *buf, size_t N);


- 能从socket句柄中返回数据
- 返回的数据最多N bytes
- 若数据少于Nbytes,则会返回现有的可用数据
- 若无可用数据,且socket处于阻塞模式,read()会阻塞,直到数据可用
- 若无可用数据,且socket处于非阻塞模式,read()返回-1,设置 error code to EWOULDBLOCK
- 对于socket可以分为数据报套接字(datagram sockets)和流套接字(Stream sockets)
  - 对于datagram sockets,接收在buffer大小内的数据,将多余的数据丢弃
  - 对于Stream sockets,可以使用循环read()来获取所有数据
  • 查看句柄的占用情况

  • 优秀的网络编程文章
https://blog.csdn.net/w968516q/article/details/53816801
  • 关闭套接字后 显示被占用

  • socket句柄在不同线程的行为

  • 监听socket的线程的退出方法

1. accept()阻塞 用信号方式退出
2. accept()非阻塞 使用select降低CPU的消耗

  • errno在什么类型的错误发生后会被设置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值