Linux
Away-Far
这个作者很懒,什么都没留下…
展开
-
网络编程之——多路IO转接(epoll模型)
epoll内部使用红黑树数据结构,epoll_create函数创建一个根节点并返回,epoll_ctl函数进行添加删除修改子节点。epoll操作过程需要三个接口,分别如下:#include <sys/epoll.h>int epoll_create(int size);int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);int epoll_wait(int epfd, struct epoll_event原创 2020-07-20 16:25:58 · 201 阅读 · 0 评论 -
网络编程之——多路IO转接(poll模型)
poll函数原型struct pollfd { int fd; /* file descriptor */ short events; /* requested events */ short revents; /* returned events */};//fds 监听数组//nfds 监听数组的实际个数//timeout -1 无限超时// 0 立即返回// >0 超时返回 //返回值 >0结构体中reve原创 2020-07-14 15:06:25 · 136 阅读 · 0 评论 -
网络编程之——多路IO转接(select模型改进)
select模型中在处理监听事件时需要对文件描述符依次遍历,此处可以稍作改进,避免不必要的遍历。改进思路定义一个FD_SETSIZE大小的数组,用于存储有效连接定义一个下标变量用于记录存储连接数组中的有效连接最大下标,供遍历作为上限值使用int maxC = -1;int client[FD_SETSIZE];//存储连接的文件描述符for(int k=0;k<FD_SETSIZE;++k)//初始化{ client[k] = -1;}连接时处理if(FD_ISSET(lfd,原创 2020-07-14 10:39:07 · 148 阅读 · 0 评论 -
网络编程之——多路IO转接(select模型)
select模型优点 实现多路复用 避免了频繁创建多进程/多线程处理连接产生的开销,提高了连接处理效率缺点 最多监听1024个文件描述符 事件处理时需要依次遍历,带来不必要的开销select函数原型//nfds 最大描述符加1//readfds 输入输出参数 返回读事件文件描述符集合//writefds输入输出参数 返回写事件文件描述符集合//exceptfds输入输出参数 返回异常事件文件描述符集合//timeout 0 非阻塞 立即返回 NUL原创 2020-07-14 10:13:32 · 184 阅读 · 0 评论 -
网络编程之——多进程并发服务器
思路:主进程循环等待连接,连接成功后创建一个子进程,在子进程中处理该连接的数据通信,然后在主进程中注册SIGCHLD中断信号回收子进程资源防止僵尸进程产生,主进程继续执行等待连接。示例:#include "wrap.h"#include <stdlib.h>//#include <stdio.h>#include <netinet/in.h>#include <netinet/ip.h>#include <arpa/inet.h>//原创 2020-07-09 16:12:42 · 321 阅读 · 0 评论 -
网络编程之——多线程并发服务器
思路:循环等待连接,连接成功后创建一个子线程处理该连接的数据通信,然后继续等待连接。socket接口封装:#include "wrap.h"#include <sys/types.h>#include <errno.h>#include <unistd.h>void sys_err(const char *ch){ perror(ch); exit(1);}int Socket(int domain, int type, int pr原创 2020-07-09 16:04:57 · 284 阅读 · 0 评论 -
网络编程之——简单socket客户端程序
客户端代码执行步骤:1、创建socket;2、连接服务器 connect() (参数传递服务端IP地址和端口);3、数据通信4、关闭连接 close().示例:#include <sys/socket.h>#include <netinet/in.h>#include <netinet/ip.h>#include <arpa/inet.h>#include <unistd.h>#include <ctype.h>原创 2020-07-09 15:54:12 · 915 阅读 · 0 评论 -
网络编程之——简单socket服务端程序
服务器端代码执行步骤:1、创建socket;2、绑定服务器地址和端口 bind();3、设置监听参数 listen();4、等待链接 accept();5、关闭链接close().示例:#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <netinet/ip.h>#include <stdio.h>#include <原创 2020-07-09 15:47:41 · 291 阅读 · 0 评论 -
Linux下vscode使用Makefile
task.json{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "build-debug", "type": "shell",原创 2020-07-07 10:57:09 · 1857 阅读 · 0 评论 -
Linux下使用vscode
1、下载安装vscodevscode下载地址2、安装插件3、添加源文件4、添加配置修改launch.jason脚本{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ {原创 2020-06-24 15:10:26 · 7107 阅读 · 0 评论 -
Linux下使用coredump
1、查看当前coredump文件大小设置状态使用ulimit -c 或 ulimit -a 命令若值为0,表示coredump文件大小为0,默认不使用coredump。2、设置coredump文件大小“ulimit -c [size]” 例,ulimit -c 80;“ulimit -c unlimted” 不限制文件大小永久生效办法:#vi /etc/profile 然后,在profile中添加:ulimit -c 1073741824(但是,若将产生的转储文件大小原创 2020-06-23 17:14:59 · 3551 阅读 · 0 评论