与read和write函数相似,只是多了一个附加的参数,其函数原型为:

#include <sys/socket.h>
ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags);
ssize_t send(int sockfd, void *buff, size_t nbytes, int flags);

成功返回读入或写出的字节数,出错返回-1

recv和send的前三个参数与read和write相同。参数flags的值或为0,或由下面的值中的一个或者逻辑或构成

MSG_DONTOUTE:不查路由表,send。这个标志告诉内核目的主机在直接连接的本地网络上,不要查路由表。这是对提供这种特性的SO_DONTROUTE套接口选项的补充。  用   MSG_DONTROUTE标志可以对单个输出操作提供这种特性,而套接口选项则针对某个套接口上的所有输出操作。

MSG_DONTWAIT:本操作不阻塞,send和recv。这个标志将单个I/O操作设为非阻塞方式,而不需要在套接口上打开非阻塞标志,执行I/O操作,然后关闭非阻塞标志

MSG_OOB:发送或接收带外数据,send和recv。用send时,这个标志指明发送的是带外数据。用recv时,这个标志指明要读的是带外数据而不是一般数据。

MSG_PEEK:查看外来的消息,recv。这个标志可以让我们查看可读的数据,在recv或recvfrom后系统不会将这些数据丢弃。

MSG_WAITALL:等待所有数据,recv。它告诉内核在没有读到请求的字节数之前不使读操作返回。如果系统支持这个标志,我们就可以去掉readn函数。即使设定了MSG_WAITALL,如果发生下列情况(1)捕获一个信号,(2)连接被终止;(3)在套接口上发生错误,这个函数返回的字节数仍会比请求的少。

网络编程学习笔记(recv和send函数)相关推荐

  1. 网络编程学习笔记(UDP的connect函数)

    对于已连接的UDP套接口,发生了三个变化: 1.再也不能给输出操作指定目的IP地址和端口,也就是说,不能再调用 sendto,而使用send或者write.写到已连接UDP套接口上的任何东西都自动发送 ...

  2. 网络编程学习笔记(recvmsg和sendmsg函数)

    这两个函数是最通用的I/O函数.实际上,可以用recvmsg代替read.readv.recv和redvfrom.同样,各种输出函数都可以用sendmsg取代 #include<sys/sock ...

  3. 网络编程学习笔记(getservbyname和getservbyport函数)

    通过服务器的名字而不是服务器端口号来认知它,而且如果从主机到端口号的映射包含在一个文件中(一般是/etc/services),则如果端口号改变,我们所需做的所有改动就是改动文件/etc/service ...

  4. 网络编程学习笔记(readv和writev函数)

    这两个函数与read和write相似,但readv和writev可以让我们在一个函数调用中读取多个缓冲区,这些操作被称为分散读和集中写.其函数原型为: #include <sys/uio.h&g ...

  5. 网络编程学习笔记(recvfrom和sendto函数)

    其原型为: #include <sys/socket.h>ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags ...

  6. 网络编程学习笔记(getsockopt和setsockopt函数)

    其原型为: #include <sys/socket.h> int getsockopt(int sockfd, int level, int optname, void *optval, ...

  7. 15Java网络编程学习笔记

    Java网络编程学习笔记 文章目录 1 网络基础 1.1 网络通信 1.2 网络 1.3 IP地址 1.5 域名 1.6 端口号 1.7 网络通信协议 1.8 TCP协议 1.9 UDP协议 2 In ...

  8. java 网络编程学习笔记

    java 网络编程学习笔记 C/S模式:客户端和服务器 客户端创建流程 1 1.建立Socket端点 2 3 Socket s = new Socket(绑定地址, 绑定端口); 2.确认源数据方式和 ...

  9. [Linux网络编程学习笔记]索引

    一.Linux基本知识 [学习笔记]Linux平台的文件I/O操作 [学习笔记]Linux平台的文件,目录及操作 [Linux学习笔记]标准输入输出 [Linux学习笔记]进程概念及控制 [Linux ...

最新文章

  1. 日常工作问题解决:rhel7下配置多路径设备
  2. Kdevelop的安装-2种方法
  3. 【高级绘图】MATLAB应用实战系列(八十)-圣诞前夜,想表白女神?教你如何用MATLAB绘制圣诞树动态图(附MATLAB代码)
  4. nuget pack
  5. nginx配置 vue打包后的项目 解决刷新页面404问题|nginx配置多端访问
  6. centsos7修改主机名 [root@st152 ~]# cat /etc/hostname
  7. OkHttp 3.x 源码解析之Dispatcher分发器
  8. MySQL快速上手[学习笔记](一)
  9. gflags的使用(转载)
  10. 解决System进程占用80端口
  11. JAVA计算机毕业设计无人智慧药柜系统设计(附源码、数据库)
  12. C#打印机套打三联单
  13. C语言气温连续上升的天数,广西多地连阴雨天数破纪录 - 广西首页 -中国天气网...
  14. 华为EC1261使用小记
  15. java转换中文日期格式_java 转换日期格式的方法
  16. Oracle 企业管理器DataBase Control使用说明
  17. 记录一次重装win10系统后,没有1920*1080分辨率的问题
  18. Java 抛出异常【throw】
  19. Greenplum中的vacuum
  20. aspen模拟蒸发器_用aspen计算多效蒸发器:高浓盐废水处理蒸发工艺简介

热门文章

  1. Ubuntu文件的复制、移动和删除命令
  2. 上海交通大学c语言章节作业,上海交通大学级C语言测试题.doc
  3. 关于python的一些好的书籍推荐-如果只能推荐3本关于python的书,你会推荐哪3本?...
  4. python零基础入门教程视频下载-Python零基础入门学习视频教程全42集,资源教程下载...
  5. 不是程序员学python有什么用-程序员的基本功:为什么非要用Python,其他语言不好吗?...
  6. monty python life of brian-50大最搞笑喜剧片,无厘头成必杀技!
  7. python3.6安装-python3.6的安装及注意事项
  8. python是不是特别垃圾-震惊!垃圾分类居然能用Python搞定!
  9. 自学python要到什么程度-学好深度学习,Python 得达到什么程度?
  10. python基础代码事例-python基础第三章