linux socket非阻塞之 send 和sendto函数

本文介绍了Linux下TCP的send和UDP的sendto函数在非阻塞模式下的使用。当返回值小于0时,根据errno判断情况:EAGAIN或EWOULDBLOCK表示缓冲区满,可等待通知;EINTR表示被中断,可继续尝试;其他错误码则应关闭socket。返回值大于等于0但不等于请求长度时,需继续发送剩余数据。
摘要由CSDN通过智能技术生成

1,函数原型

#include <sys/socket.h>

ssize_t send(int sockfd, const void *buff, size_t nbytes, int flags);
ssize_t sendto(int sock, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);

TCP使用send,UDP使用sendto,需要指定发送数据的ip和端口号。

返回值是实际发送的字符数,因为我们知道要发送的总长度,所以,如果没有发送完,我们可以继续发送。

  • < 0,当返回值当返回值为 -1   时, 我们需要判断  errno
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值