linux高性能网络编程读书笔记之socket数据读写
发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,数据读写分为TCP数据读写,UDP数据读写,通用数据读写1.TCP数据读写定义:socket是连接用户空间和内核空间,TCP和UDP是内核第一层。解释:对于文件的read和write同样适用于sock
千家信息网最后更新 2025年02月07日linux高性能网络编程读书笔记之socket数据读写
数据读写分为TCP数据读写,UDP数据读写,通用数据读写
1.TCP数据读写
定义:socket是连接用户空间和内核空间,TCP和UDP是内核第一层。
解释:对于文件的read和write同样适用于socket
例子:对于TCP流数据的系统调用
1.1ssize_t recv(int sockfd,void buf,size_t len,int flags);
1.2ssize_t send(int sockfd,const void buf,size_t len,int flags);
参数解释:
1.3buf和len是指缓存区的位置和大小
1.3.1flags通常为0
recv成功返回实际读取到的数据的长度
注:实际读取的长度可能小于期望len,所以要多次调用recv
recv可能返回0,意味着通信对方已经关闭了连接
recv出错返回-1并设置errno
1.4send基本上同上
发送的实例代码
int main(int argc, char *argv[]){ if(argc<=2){ printf("参数是错误"); } //一系列之前的连接 if(connect(sockfd,(struct sockaddr*) &server_address,sizeof(server_address))<0){ printf("连接失败"); }else{ const char* oob_data = "abc"; const char* normal_data = "123"; send(sockfd,normal_data,strlen(normal_data),0); sned(sockefd,oob_data,strlen(oob_data).MSG_OOB); send(sockfd,normal_data,strlen(normal_data),0); } close(sockfd); return 0; } //接收代码也是类似的 //连接成功 int connfd = accept(sock,(struct sockaddr *) &client,&client_addrlength); char buffer[BUF_SIZE]; memset(buffer,'\0',BUF_SIZE); ret = recv(connfd,buffer,BUF_SIZE-1,0); close(connfd); close(sock); return 0; ./testoobrecv 192.168.1.109 54321 ./testoobsend 192.168.1.109 54321 tcpdump -ntx -i eth0 port 54321 注:flags参数只对send和recv的当前调用生效,可以使用setsockket系统调用来永久性修改socket的某些属性
数据
参数
成功
代码
内核
实际
空间
系统
长度
解释
位置
例子
大小
实例
对方
属性
意味
文件
永久性
用户
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
邵阳软件开发培训班
前端开心消消乐需要数据库不
网络安全会议天津
国网网络安全检查报道
宁国进口软件开发服务商家
微信三级分销软件开发
公司网络技术开发岗位职责
vb6.0如何创建数据库
河南一七网络技术有限公司
接口服务器的url怎么查
新冠病毒数据库有哪些
关系型数据库如何优化
计算机网络安全的应用
程序员数据库应用
数据库管理师考试难吗
上海赢互联网科技
海康存储服务器磁盘阵列调试
问道手游换服务器怎么办
张伟文游戏软件开发
网络安全征文活动500字
服务器分c盘与d盘吗
金蝶服务器端怎么管理
塔式服务器如何设置数据库用户
眼科病例数据库
中国网络安全配置
曙光服务器改管理口密码
eplan主数据库非法
小白数据库xsmax
川传计算机网络技术
网络安全工程专业考研方向