Linux网络编程基础3:数据读写
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:数据读写相关推荐
- Linux网络编程基础
2019独角兽企业重金招聘Python工程师标准>>> (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍 客户端和服务端 网络程序和普通的程序有一个最大的 ...
- Linux网络编程基础知识
Linux网络编程基础知识 1. 协议的概念 1.1 什么是协议 1.2 典型协议 2 网络应用程序设计模式 2.1 C/S模式 2.2 B/S模式 2.3 优缺点 3 分层模型 3.1 OSI七层模 ...
- Linux网络编程基础1(网络应用程序设计模式,分层模型,协议格式)
Linux网络编程基础(网络应用程序设计模式,socket编程,inet_pton,inet_ntop,服务端创建连接的过程,客户端创建连接的过程,socket函数封装) 1. 网络应用程序设计模式 ...
- Linux网络编程基础和一步一步学
·Linux网络编程 基础(一) ·Linux网络编程 基础(二) ·Linux网络编程 基础(三) ·Linux网络编程 基础(四) ·Linux网络编程 基础(五) ·Linux网络编程 基础(六 ...
- Linux高性能服务器编程 第5章 Linux网络编程基础API
5.1 socket 地址 API 现代CPU的累加器一次都能装载(至少)4 字节(这里考虑32位机,下同),即一个整 数.那么这4 字节在内存中排列的顺序将影响它被累加器装载成的整数的值.这就是字节 ...
- linux 网络编程 ping,Linux 网络编程基础(4) -- Ping 的C代码实现
1.背景 在进行网络编程的时候,通常使用的协议有TCP协议,UDP协议.这些协议在简历套接字之初需要制定套接字的类型,比如TCP应当设置为 SOCK_STREAM, UDP对应的套接字应当设置为SOC ...
- Linux网络编程基础API
为何需要半关闭 考虑以下情况: 一旦客户端连接到服务器,服务器将约定的文件传输给客户端,客户端收到后发送字符串「Thank you」给服务器端. 此处「Thank you」的传递是多余的,这只是用 ...
- Linux 网络编程基础-socket
标题文章目录 Linux 网络基础 分层模型结构: C/S 模型:client-server B/S模型:browser-server 以太网帧和ARP协议 IP 协议 UDP 协议 TCP 协议 网 ...
- Linux网络编程基础:send函数
send函数 1)头文件 #include <sys/types.h> #include <sys/socket.h> 2)函数原型 ssize_t send(int sock ...
最新文章
- R语言使用lm构建线性回归模型、并将目标变量对数化实战:模型训练集和测试集的残差总结信息(residiual summary)、模型训练(测试)集自由度计算、模型训练(测试)集残差标准误计算
- 概率潜在语义分析(Probabilistic Latent Semantic Analysis,PLSA)
- numpy(3)-numpy.random.random() ,random_sample()连续均匀分布
- Python生成器(send,close,throw)方法详解
- 搭建串口收发与存储双口RAM简易应用系统
- 【caffe-windows】Linux至Windows平台的caffe移植
- mysql 死锁监视器_并发基础知识:死锁和对象监视器
- android原生browser分析(一)--Application
- UE4游戏提取的通用步骤(21_9_8)
- Tier-1 ISP Tier-2 ISP and Tier-3 ISP
- 彻底搞懂git代码冲突问题----产生冲突以及解决冲突
- 图片文件捆绑教学(仅限制图片与rar)
- python怎么播放视频教程_python怎样播放视频?
- 关于make提示must been abled with the -std=c++11 or -std=gnu++11 compiler options
- LU分解,LDLT分解,Cholesky分解
- 100集华为HCIE安全培训视频教材整理 | PKI核心部分CA
- HTTP, 网络七层模型
- 故障:Win7 无故丢失桌面上的快捷方式
- UPC-排课表+玉米田(容斥原理+组合数学公式)
- svg飞艇天空云层动画代码
热门文章
- 猿友吐糟大会: 这一年我真的被“卖惨了”
- 极域电子教室2010版广播出现黑屏问题解决办法之一
- I2C知识大全系列三 —— I2C驱动之单片机中的I2C
- 电子投票算法_电子投票的历史不短
- 电脑开始怎么设置计算机用户名,如何修改电脑登录用户名以及密码呢?5秒钟让你学会...
- Hadoop、Yarn相关命令简介
- 在知识蒸馏中不要忘记教师网络detach()
- ubuntu 16.04下安装pytorch配置caffe2(cuda 9.0+cudnn 7.6)
- 技术写作:如何编写软件文档
- 插曲一下:很多程序员会遇到的脱发问题