UNIX网络编程----基本UDP套接字编程(八)

UNIX网络编程---基本UDP套接字编程

一、概述

UDP是无连接的不可靠的数据报协议,不同于TCP提供的面向连接的可靠字节流。使用UDP编写的一些常见的应用程序有:DNS、NFS和SNMP(简单网络管理协议)。

客户不于服务器建立连接,而是只管使用sendto给服务器发送数据报,其中必须制定目的地的地址作为参数。类似地,服务器不接受来自客户的连接,而是只管调用recvfrom函数,等待来自某个客户的数据到达。Recvfrom将与所接受的数据报一道返回客户的协议地址iyici服务器可以把响应发送刚给正确的客户。

二、recvfrom和sendto函数

#include<sys/socket.h>

Ssize_t recvfrom(int sockfd,void *buff,sieze_t nbytes,intflags,struct sockaddr *from,socklen_t *addrlen);

Ssize_t sendto(int sockfd,const void*buff,size_t nbytes,int flags,const struct sockaddr *to,socklen_t addrlen);

前三个参数和read、write函数的三个参数:描述符、指向读入或写出缓冲区的指针和读写字节数。

Recvfrom的最后两个参数类似于accept的最后两个参数:返回时其中套接字地址结构的内容告诉我们是谁发送了数据报(UDP情况下)或者是谁发起了链接(TCP情况下)。Sendto的最后两个参数类似于conect的最后两个参数:调用时其中套接字地址结构被我们填入数据报将发送(UDP情况下)或与之建立连接(TCP情况下)的协议地址。

写一个长度为0的数据报是可行的。

如果recvfrom的from参数是一个空指针,那么相应的长度参数也必须是一个空指针,表示我们并不关心数据发送者的协议地址。

Recvfrom和sendto都可以用于TCP,尽管通常没有理由这样做。

一般来说,大多数TCP服务器是并发的,而大多数UDP服务器是迭代的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值