linux高性能网络编程读书笔记之socket数据读写
admin
2023-03-13 22:01:27
0

数据读写分为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的某些属性

上一篇:日常总结--AD域服务

下一篇:nginx 日志

相关内容

热门资讯

今日重磅消息“传送屋.有没有挂... 家人们!今天小编来为大家解答传送屋透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买很多...
终于了解“大金牙麻将.到底有挂... 您好:大金牙麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游...
2026河南经济咋发展?这些提... 【大河财立方 记者 段伟朵 朱娟 张克瑶 闫文瑞】 12月22日,河南省委经济工作会议在郑州召开,总...
南阳市自然资源和规划局原党组副... 南阳市自然资源和规划局原党组副书记、市土地储备开发中心原主任杨林青涉嫌严重违纪违法,主动投案,目前正...
日本“普贤”核反应堆发生含放射... 据日本媒体报道,日本正在报废施工的核反应堆“普贤”发生含放射性水泄漏事件,可能有数人遭辐射。
引入四家地市国资,国民养老注册... 【大河财立方 记者 陈玉静】 12月22日,国民养老保险股份有限公司(以下简称国民养老)发布公告称,...
刚刚过会!拟募资15.3亿元,... 【大河财立方 记者 夏晨翔】 12月23日,深交所消息,洛阳盛龙矿业集团股份有限公司(以下简称盛龙股...
重磅消息“战神牛牛.辅助器?”... 有 亲,根据资深记者爆料战神牛牛是可以开挂的,确实有挂(咨询软件无需打开...
翔宇医疗:脑机接口相关产品已进... 来源:滚动播报 (来源:财闻) 公司已开展部分消费级产品的布局,重点方向是将医疗机构内的康复理疗技术...
今日重大通报“温州茶苑.到底有... 今日重大通报“温州茶苑.到底有挂吗?”确实真的有挂您好,温州茶苑这个游戏其实有挂的,确实是有挂的,需...