UDP和TCP处于同一层网络模型中,也就是运输层,基于二者之上的应用有很多,常见的基于TCP的有HTTP、Telnet等,基于UDP有DNS、NFS、SNMP等。UDP是无连接,不可靠的数据协议服务,而TCP提供面向流、提供可靠数据服务。注意,UDP和TCP没有好坏之分,只是二者的适用场景不同罢了。

  典型的UDP套接字编程模型是客户端不予服务端建立连接,而只是调用sendto函数来向服务端发送数据,其中必须要指定服务端的信息,包括IP和端口等;服务端不接收来自客户端的连接,而只是调用recvfrom函数,来等待某个客户端的数据到达。

移动开发培训,Android培训,安卓培训,手机开发培训,手机维修培训,手机软件培训

UDP编程模型

  在UDP套接字中,有2个函数最常用,也就是sendto和recvfrom,二者的声明如下:

#include <sys/socket.h> ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags,                  struct sockaddr *from, socklen_t *addrlen); ssize_t sendto(int sockfd, void *buff, size_t nbytes, int flags,                const struct sockaddr *to, socklen_t addrlen);

  recvfrom和snedto的前3个参数和read/write的前3个参数一样。flags表示设置的标志值,简单的UDP程序可以直接设置为0,最后两个参数表示服务端地址(对于sendto来说)或者是对端地址(对于recvfrom来说)。如果不关心对端的地址,则设置为NULL,此时addrlen也可以设置为NULL了。

网友评论