高性能服务器之IO多路复用

1.BIO的缺陷BIO中的B是Blocking的阻塞的意思作为服务端开发,使用ServerSocket绑定端口号之后会监听该端口,等待accept事件,accept是会阻塞当前线程当我们收到accept事件的时候,程序就会拿到客户端与当前服务端连接的Socket针对这个socket我们可以进行读写,
网络编程 2021年02月15日 29次浏览

通过fd链接去获取相应的本地地址和远端地址

通过fd链接去获取相应的本地地址和远端地址intget_ip_and_port_by_fd(intfd,char*local_ip,int*local_port,char*peer_ip,int*peer_port){if((!local_ip||!local_port)&&(!pe
c/c++ 网络编程 2021年01月20日 46次浏览

服务器----分布式锁原理

锁线程锁lock(mutex)资源操作unlock(mutex)进程锁(nginx中accept锁-共享内存+信号量)分布式锁在不同机器的进程的锁分布式锁的实现方案数据库redis,mysqlzookeeper分布式锁有哪些特征互斥性。可重入性,一个进程允许递归获取锁(需要递归释放锁)。锁超时(进程
工具 c/c++ 网络编程 计算机网络 2020年11月22日 116次浏览

tcp udp数据报定义结构体

文章链接:https://codemouse.online/archives/2020-06-30-21-08-22tcpudp数据报定义结构体由于结构体写在结构体里面容易出现结构体内存对齐问题,需要将对齐值改为1,防止出错。#pragmapack(1)//设置对齐数udp报文头定义:structu
c/c++ 网络编程 计算机网络 2020年06月30日 300次浏览

高性能服务器C10K到C1000K到C10M的转变路程

服务器c10K->c1000K->c10M的转变路程网络五元组五元组标识一个网络fd的唯一网络fd-->五元组(sip,dip,sport,dport,proto)c1000k服务器的并发量条件(百万并发)服务器能够承载的客户端数量。(最基本条件)5w以上的应供应操作。(也就是客户
网络编程 linux 2020年06月26日 310次浏览

给服务端一个shell控制端

连接服务器,并给服务端一个shellvoidstart_reverse_shell(char*bd_ip,unsignedshortintbd_port){intsd;structsockaddr_inserv_addr;structhostent*server;sd=socket(AF_INET,
c/c++ shell 网络编程 linux 2020年04月02日 325次浏览

如何开启原始套接字并发送自定义ping包(icmp)

开启套接字structprotoent*protocol;if((protocol=getprotobyname("icmp"))==NULL){perror("getprotobyname");exit(1);}if((sockfd=socket(AF_IN
c/c++ 网络编程 linux 2020年04月02日 351次浏览

gethostbyname获取主机信息

获取主机信息#include<netdb.h>externinth_errno;structhostent*gethostbyname(constchar*name);#include<sys/socket.h>/*forAF_INET*/structhostent*geth
c/c++ 网络编程 linux 2020年04月02日 322次浏览

getprotobyname和getprotobynumber获取协议名字和协议号

获取协议名字和协议号#include<netdb.h>structprotoent*getprotoent(void);//获取下一条协议structprotoent*getprotobyname(constchar*name);//通过名字获取structprotoent*getpro
c/c++ 网络编程 linux 2020年04月02日 288次浏览

AIO编程方法

AIO编程方法对象structaiocb{/*下面所有字段依赖于具体实现*/intaio_fildes;/*文件描述符*/off_taio_offset;/*文件偏移*/volatilevoid*aio_buf;/*缓冲区地址*/size_taio_nbytes;/*传输的数据长度*/intaio_
c/c++ 网络编程 linux 2020年03月27日 323次浏览