[UNP]:Unix域套接字 Unix Domain协议是一个在单主机上执行进程间通信的IPC方法, 使用Unix Domain套接字有以下几个理由: UNIX域套接字域TCP套接字相比,在同一台主机的传输速度前者是后者的两倍 UNIX域套接字仅仅复制数据,并不执行协议处理,不需要添加或删除网络报头,无需计算校验和,不产生顺序号,也不需要发送确认报文 UNIX域套接字可以在同一台主机上各进程之间传递文件描述符 UNIX域 2022-04-04 unp
[UNP]:高级IO 1. 套接字超时在涉及套接字的I/O操作上设置超时的方法有三种 使用alarm() 使用select() 使用套接字选项: SO_RCVTIMEO, SO_SNDTIMEO 1. alarm接下来使用alarm()为connect()设置超时 123456789101112131415161718192021222324252627282930313233343536373839404142/ 2022-04-02 unp
[UNP]:名称-地址转换函数 下面将介绍名称(主机名,服务名)与地址之间的转换函数 1. gethostbyname()该函数用于从主机名获取IP地址 struct hostent 1234567struct hostent{ char *h_name; /* 主机的官方名称 */ char **h_aliases; /* 主机别名的指针数组 */ int 2022-04-01 unp
[UNP]:套接字选项 有以下几个API可以用于设置套接字选项: getsockopt() setsockopt() fcntl() ioctl() 本文将会这些API以及选项进行介绍 选项汇总图 套接字层和IP层 传输层 1. getsockopt(), setsockopt()1234#include <sys/socket.h>int getsockopt(int sockfd, in 2022-04-01 unp
[UNP]:基本UDP套接字 UDP套接字API事件图 1. recvfrom(), sendto()这两个函数类似于标准的read()和write()函数,不过需要三个额外的参数 recvfrom, sendto 1234567#include <sys/socket.h>/* 接收信息函数 */ssize_t recvform(int sockfd, void *buff, size_t nbytes 2022-04-01 unp
[计算机自顶向下方法]:路由选择协议 1.路由选择算法路由选择算法可以根据算法是集中式还是分散式来划分 集中式路由选择算法 使用该算法时,需要已知所有节点的之间的连通性以及所有链路的开销,比如链路状态(Link State,LS)算法 分散式路由选择算法 没有链路拥有所有链路开销的完整信息,路由器以迭代,分布式的方法计算出最低开销路径,比如距离向量(Distance Vector,DV算法 1.链路状态路由选择算法(LS算法) 2022-03-31 计算机网络
[UNP]:TCP客户服务器_IO复用 1. select版本 服务器端IO复用 服务器端IO复用的基本思想就是使用一个数据结构来维护客户于套接字描述符的映射关系,每当有一个客户建立连接时,就通过accept()为其分配一个以连接文件描述符,在本地数据结构中添加一个映射条目,每当断开一个客户连接时,就回收该文件描述符,在本地的数据结构中移除该条目 UNP中采用了一个数据client[]和一个集合rest来表示这样的映射关系, clien 2022-03-30 unp
[UNP]:IO复用_select_poll 为什么使用IO复用 在之前的服务器关闭场景中,如果服务器主动关闭,会导致服务器发送FIN报文段给客户端,但是如果客户此时正阻塞于 Fgets(), 即客户正尝试从标准输入中读取数据,那么客户将忽略该FIN报文段,直到其解除阻塞,读取sockfd为止 12345678910111213141516`#include "unp.h"void str_cli(FILE *fp, i 2022-03-30 unp
[UNP]:TCP客户服务器_迭代式 编写一个完整的 TCP 客户端/服务器程序: 客户从标准输入读入一行文本,并写给服务器 服务器从网络输入读入这行文本,并回射给客户 客户从网络输入读入这行回射文本,并显示在标准输出上 1. 函数准备1. TCP 回射服务器程序原型: 12345678910111213141516#include “unp.h”void str_echo(int sockfd){ ssize_t 2022-03-30 unp
[UNP]:套接字编程基本API 套接字函数事件表 1. socket()socket()用于创建新的套接字 socket() 1234#include<sys/socket.h>int socket(int family, int type, int protocol); // 返回:成功返回套接字描述符,失败-1 family fa 2022-03-29 unp