UDP通信

sendto用于将应用缓冲区中的数据发适到指定的接收进程地址

#include <sys/socket.h>

Int sendto(int sockid, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen);

参数说明:

socdid: UDP套接字描述符

msg: 数据缓冲区

flags: 用于控制发送的操作

to: 接收者的地址

tolen: 地址长度

返回说明:

发送成功,返发送数据的长度,发送失败,返回-1,并使用errno设置错误原因。

 

注意:

1UDP只有一个发送缓冲区的大小,如果发送的数据长度大于这个缓冲区长度,则sendto返回EMSGSIZE错误,小于这个长度则总会成功;

2sendto只是将数据从应用缓冲区拷贝到系统缓冲区,然后立即返回。

3UDP允许发送空数据报,即只有数据数据报的首部,数据长度为0的数据报;

 

Recvfrom将从套接安缓冲区中接收发送给本端口的数据报

#include <sys/socket.h>

Int recvfrom(int sockid, const void *buf, int len, unsigned int flags, const struct sockaddr *from, int fromlen);

参数说明:

Sockid: UDP套接字描述符

Msg: 接收数据缓冲区

Flags: 接收操作选项

From: 如果程序希望得到UDP数据报的源地址和源端口,可以指定核心用于存放地址信息的应用空间from及这个空间的长度,否则可以将fromlen都设置为null;

 

返回说明:

Recvfrom如果接收的是普通的UDP数据报,它将返回数据报数据内容的长度,如果收到的是空数据报,它将返回0

 

注意:

1)。Recvfrom收到的是整个数据报,不像TCP中存在数据边界控制的问题;

2)。UDP为数据的接收提供了缓冲区,缓冲区队列满时将UDP数据将被丢弃;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值