网站空间编辑器,做网站的专业,培训机构整顿,做竞价的网站做优化有效果吗1. UDP
UDP:用户数据报协议#xff08;User Datagram Protocol#xff09;#xff0c;传输层协议之一#xff08;UDP#xff0c;TCP#xff09;
2. 特性
发送数据时不需要建立链接#xff0c;节省资源开销不安全不可靠的协议 //一般用在实时性比较高…1. UDP
UDP:用户数据报协议User Datagram Protocol传输层协议之一UDPTCP
2. 特性
发送数据时不需要建立链接节省资源开销不安全不可靠的协议 //一般用在实时性比较高的广播组播//VNC面向报文。资源开销小
3.框架
3.1 C/S模式
有一个专用的客户端 client----server
传输方式用户主机1---服务器----用户主机2
框架设计
serversocket() bind()recvfrom()close()clientsocket() bind()sendto() close()
3.2 B/S模式
有一个通用的客户端浏览器
browser----server
clientsocket() sendto() close()
4. API接口
4.1 socket函数
套接字:通信对象的抽象, 网络通信的端口一个通信链的句柄。 int socket(int domain, int type, int protocol); 功能: 创建一个用来通信的接口文件描述符) 参数: domain:通信的协议族(AF_INET:IPv4协议族) type: SOCK_DGRAM:数据报套接字 (UDP使用此类型) SOCK_STEAM:流式套接字 (TCP使用此类型) SOCK_RAW:原始套接字 protocol: 默认传0 按照协议的默认属性创建 返回值: 成功返回用来进行通信的文件描述符 失败返回-1
IPv4地址形式: struct sockaddr_in { sa_family_t sin_family; /* AF_INET */ in_port_t sin_port; /* 端口 */ struct in_addr sin_addr; /* IP地址 */ }; /* Internet address. */ struct in_addr { uint32_t s_addr; /* address in network byte order */ };
端口转换htons函数
地址转换inet_addr函数
4.2 sendto函数 ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen); 功能: 向一个IP地址和端口发送数据信息 端口号:区分一台主机不同的应用程序(0 - 65535) 参数: sockfd:套接字文件描述符 buf:发送数据空间首地址 len:发送数据的长度 flags:发送数据属性(默认为0) dest_addr:目的IP地址和端口 addrlen:目的IP地址和端口的长度 返回值: 成功返回实际发送字节数 失败返回-1 4.3 htons函数 主机转网络字节序
主机小端 host网络大端 network
四种不同的转化函数
uint32_t htonl(uint32_t hostlong); 主机转网络uint16_t htons(uint16_t hostshort); 主机转网络uint32_t ntohl(uint32_t netlong); 网络转主机uint16_t ntohs(uint16_t netshort); 网络转主机 h:host n:net l:long s:short
4.4 inet_addr函数 in_addr_t inet_addr(const char *cp); 功能: 将字符串IP地址转换成二进制IP地址形式 char *inet_ntoa(struct in_addr in); 功能 将二进制ip转换成字符串
4.5 bind int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 功能:将一个套接字与IP地址和端口号绑定(只能绑定自己的IP地址) 参数: sockfd:套接字文件描述符 addr:IP地址和端口号结构体首地址 addrlen:长度 返回值: 成功返回0 失败返回-1
4.6 recvfrom ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); 功能: 接收网络发送的数据信息 参数: sockfd:套接字文件描述符 buf:存放数据空间首地址 len:最大能够接收的数据个数 flags:属性默认为0 src_addr:存放发送端IP地址信息的空间首地址 addrlen:想要接收的数据长度的空间首地址 返回值: 成功返回实际接收字节数 失败返回-1
具有阻塞功能(直到接收到数据,才会继续向下执行) 5. UDP报文头 UDP首部有8个字节由4个字段构成每个字段都是两个字节 源端口 源主机的应用程序使用的端口号目的端口目的主机的应用程序使用的端口号 长度是指UDP头部和UDP数据的字节长度。因为UDP头 部长度为8字节所以该字段的最小值为8差错检测检测UDP数据报在传输中是否有错有错则丢弃 总结
无连接尽最大努力交付不安全不可靠丢包、乱序面向数据报机制简单传输效率高
应用场景要求实时性高但是允许数据丢失的场合直播VNC