随笔分类 - Linux网络编程
摘要:函数原型: #include <sys/types.h > #include <sys/socket.h> int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen); 参数说明:
阅读全文
摘要:/* common.h */ /*服务器端口信息*/ #define PORTLINK ".charport" /*缓存限制*/ #define MAXNAMELEN 256 #define MAXPKTLENE 2048 /*信息类型钉钉*/ #define LIST_GROUPS 0 #defi
阅读全文
摘要:函数原型: #include<netdb.h> struct hostent * gethostbyaddr(const char *addr, socklen_t len, int family); 函数功能: 返回对应于给定地址的主机信息。 参数说明: addr:指向网络字节顺序地址的指针。 l
阅读全文
摘要:函数原型: #include<sys/socket.h> int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen); int getpeername(int sockfd, struct sockaddr
阅读全文
摘要:socket函数 int socket(int protofamily, int type, int protocol); //返回sockfd,即描述符 功能: socket 函数对应于普通文件的打开操作。普通文件的打开操作返回一个文件描述字,而 socket() 用于创建一个 socket 描述
阅读全文
摘要:该项目相关知识点已经放到“网络嗅探器”标签中 下面是相关头文件 输出颜色定义 暂停或退出的信号处理 数据包 分解打印 主函数 makefile
阅读全文
摘要:一、 简介 ICMP(INTERNET CONTROL MESSAGE PROTOCOL)网络控制消息协议。 协议号为1 ICMP报文在IP报文内部 一、 ICMP类型: ICMP报文主要有两个功能:查询报文和差错报文 二、 ICMP报文头: 一、 ICMP报文的各种状态: 目的不可达报文(Dest
阅读全文
摘要:udphdr结构包含在/usr/src/linux/include/linux/udp.h udphdr->source 16位源端口 udphdr->dest 16位目的端口 udphdr->len 表示此次发送的数据报的长度,16位 udphdr->check 校验和
阅读全文
摘要:包含在/usr/src/linux/include/linux/tcp.h tcphdr->source 16位源端口 tcphdr->dest 16位目的端口 tcphdr->seq 表示此次发送的数据在整个报文段中的起始字节数。序号是32位bit的无符号数。为了安全起见,它的初始值是一个随机生成
阅读全文
摘要:iphdr->version 版本(4位),目前的协议版本号位4,也称之为IPv4 iphdr->ihl 首部长度(4位),首部长度是指IP层头部占32bit字的数目,也就是IP层头部包含多少个4字节(32b),包括任何选项,由于它是一个4bit(最大表示15)字段,因此首部最长位60个字节.普通I
阅读全文
摘要:多播(组播) 组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的ip组播地址,可以被临时组播组利用。 可使用ip
阅读全文
摘要:运行结果: ubuntu1604@ubuntu:~/wangqinghe/linux/20190831/01$ ./threadpool start thread 0x8285700... start thread 0x7a84700... start thread 0x7283700... poo
阅读全文
摘要:传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议。TCP协议在网络通信中占主导地位,绝大多数的网络通信借助TCP协议完成数据传输。但UDP也是网络通信中不可或缺的重要通信手段。 相较于TCP而言,UDP通信的形式更像是发短信。不需要在数据传输之前建立、维护连接。只专心获取数据
阅读全文
摘要:事件模型 EPOLL事件有两种模型: Edge Triggered (ET) 边缘触发只有数据到来才触发,不管缓存区中是否还有数据。 Level Triggered (LT) 水平触发只要有数据都会触发。 思考如下步骤: 在这个过程中,有两种工作模式: ET模式 ET模式即Edge Triggere
阅读全文
摘要:epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被
阅读全文
摘要:poll服务器方法采用将监听端口用数组存放起来,这样就不需要轮询的监听整个文件描述符了 如果不再监控某个文件描述符时,可以把pollfd中,fd设置为-1,poll不再监控此pollfd,下次返回时,把revents设置为0。 client 同样的包含了wrap.c和wrap.h的文件,放在错误分析
阅读全文
摘要:select server client 包含了”wrap.c”和“wrap.h”文件在上两篇博客中,这里就不重复给出了
阅读全文
摘要:makefile主要是添加了-lpthread线程库 这是服务器编写代码,客户端代码可以使用上篇,也可以使用命令:nc + IP地址+端口号来代替客户端作用 运行结果: 还使用了wrap.c和wrap.h文件,在上篇博客有,这里就重复使用了。
阅读全文