1. UDP的特点
UDP服务器在调用bind()函数之后就可以接受任何UDP客户端发来的数据,不需要像TCP一样建立一对一连接,UDP是面向无连接的。
2. UDP服务器客户端收发过程
3. sendto() 与recvfrom() 函数
1)sendto()函数,调用者为发送方
头文件:#include <sys/types.h>
#include <sys/socket.h>
函数原型:ssize_t sendto(int sockfd, const void*buf, size_t len, int flags,
const struct sockaddr*dest_addr, socklen_t addrlen);
功能:向dest_addr 表示的接收方发送数据,该函数不是阻塞的,
参数:int sockfd 发送方套接字
const void *buf 要发送的数据的地址
size_t len 发送数据的长度
int flags 通常为0
const struct sockaddr *dest_addr 接收方的ip+port
socklen_t addrlen 地址长度
返回值:成功 实际发送字节的个数
失败 -1
2)recvfrom() 函数,调用者为接收方
头文件:#include<sys/types.h>
#include <sys/socket.h>
函数原型:ssize_t recvfrom(intsockfd, void *buf, size_t len, int flags, structsockaddr *src_addr, socklen_t *addrlen);
功能:从发送方接收数据,该函数是阻塞函数
参数:int sockfd 接收方套接字
void *buf 接受数据的缓冲区地址
size_tlen 缓冲区大小
int flags 通常为0
struct sockaddr *src_addr 发送方的 ip+port
socklen_t *addrlen
返回值:成功 实际接收的字节的个数
失败 -1
示例代码:
Client.c文件代码
/**********