1.TCP数据读写

首先,read()和write()函数同样适用于socket。而socket编程接口停工了几个专门用于socket数据读写的系统调用,增加了对读写的控制。而TCP流数据读写的系统调用是:

#include<sys/types.h>
#include<sys/socket.h>
ssize_t recv(int sockfd,void *buf,size_t len,int flags);
ssize_t send(int scokfd,const void * buf,size_t len,int flags);
  • sockfd:读写sockfd上的数据
  • buf:读写缓冲区的位置
  • len:读写缓冲区的大小
    recv()函数成功时返回读取到实际的数据长度,它可能小于我们期望的长度len,所以要反复读取,才能获得完整的数据。recv返回0,说明的发送端已经关闭连接了。出错时返回-1并设置errno。
    send()函数成功时返回写入的数据长度,失败则返回-1并设置errno。
    flag参数提供了额外的控制:
    | | | | recv | send |
    | | | | | |
    |–|--|–|--|–|
    | 1 | | | | |
num 选项名称 含义 recv send
1 MSG_CONFIRM
2
3
4
5
6
7
8

2.UDP数据读写

3.通用数据读写

Linux网络编程基础3:数据读写相关推荐

  1. Linux网络编程基础

    2019独角兽企业重金招聘Python工程师标准>>> (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍 客户端和服务端 网络程序和普通的程序有一个最大的 ...

  2. Linux网络编程基础知识

    Linux网络编程基础知识 1. 协议的概念 1.1 什么是协议 1.2 典型协议 2 网络应用程序设计模式 2.1 C/S模式 2.2 B/S模式 2.3 优缺点 3 分层模型 3.1 OSI七层模 ...

  3. Linux网络编程基础1(网络应用程序设计模式,分层模型,协议格式)

    Linux网络编程基础(网络应用程序设计模式,socket编程,inet_pton,inet_ntop,服务端创建连接的过程,客户端创建连接的过程,socket函数封装) 1. 网络应用程序设计模式 ...

  4. Linux网络编程基础和一步一步学

    ·Linux网络编程 基础(一) ·Linux网络编程 基础(二) ·Linux网络编程 基础(三) ·Linux网络编程 基础(四) ·Linux网络编程 基础(五) ·Linux网络编程 基础(六 ...

  5. Linux高性能服务器编程 第5章 Linux网络编程基础API

    5.1 socket 地址 API 现代CPU的累加器一次都能装载(至少)4 字节(这里考虑32位机,下同),即一个整 数.那么这4 字节在内存中排列的顺序将影响它被累加器装载成的整数的值.这就是字节 ...

  6. linux 网络编程 ping,Linux 网络编程基础(4) -- Ping 的C代码实现

    1.背景 在进行网络编程的时候,通常使用的协议有TCP协议,UDP协议.这些协议在简历套接字之初需要制定套接字的类型,比如TCP应当设置为 SOCK_STREAM, UDP对应的套接字应当设置为SOC ...

  7. Linux网络编程基础API

    为何需要半关闭 考虑以下情况: 一旦客户端连接到服务器,服务器将约定的文件传输给客户端,客户端收到后发送字符串「Thank you」给服务器端.   此处「Thank you」的传递是多余的,这只是用 ...

  8. Linux 网络编程基础-socket

    标题文章目录 Linux 网络基础 分层模型结构: C/S 模型:client-server B/S模型:browser-server 以太网帧和ARP协议 IP 协议 UDP 协议 TCP 协议 网 ...

  9. Linux网络编程基础:send函数

    send函数 1)头文件 #include <sys/types.h> #include <sys/socket.h> 2)函数原型 ssize_t send(int sock ...

最新文章

  1. R语言使用lm构建线性回归模型、并将目标变量对数化实战:模型训练集和测试集的残差总结信息(residiual summary)、模型训练(测试)集自由度计算、模型训练(测试)集残差标准误计算
  2. 概率潜在语义分析(Probabilistic Latent Semantic Analysis,PLSA)
  3. numpy(3)-numpy.random.random() ,random_sample()连续均匀分布
  4. Python生成器(send,close,throw)方法详解
  5. 搭建串口收发与存储双口RAM简易应用系统
  6. 【caffe-windows】Linux至Windows平台的caffe移植
  7. mysql 死锁监视器_并发基础知识:死锁和对象监视器
  8. android原生browser分析(一)--Application
  9. UE4游戏提取的通用步骤(21_9_8)
  10. Tier-1 ISP Tier-2 ISP and Tier-3 ISP
  11. 彻底搞懂git代码冲突问题----产生冲突以及解决冲突
  12. 图片文件捆绑教学(仅限制图片与rar)
  13. python怎么播放视频教程_python怎样播放视频?
  14. 关于make提示must been abled with the -std=c++11 or -std=gnu++11 compiler options
  15. LU分解,LDLT分解,Cholesky分解
  16. 100集华为HCIE安全培训视频教材整理 | PKI核心部分CA
  17. HTTP, 网络七层模型
  18. 故障:Win7 无故丢失桌面上的快捷方式
  19. UPC-排课表+玉米田(容斥原理+组合数学公式)
  20. svg飞艇天空云层动画代码

热门文章

  1. 猿友吐糟大会: 这一年我真的被“卖惨了”
  2. 极域电子教室2010版广播出现黑屏问题解决办法之一
  3. I2C知识大全系列三 —— I2C驱动之单片机中的I2C
  4. 电子投票算法_电子投票的历史不短
  5. 电脑开始怎么设置计算机用户名,如何修改电脑登录用户名以及密码呢?5秒钟让你学会...
  6. Hadoop、Yarn相关命令简介
  7. 在知识蒸馏中不要忘记教师网络detach()
  8. ubuntu 16.04下安装pytorch配置caffe2(cuda 9.0+cudnn 7.6)
  9. 技术写作:如何编写软件文档
  10. 插曲一下:很多程序员会遇到的脱发问题