udp 使用connect优点_udp socket 调用connect的作用是什么

UDP套接字通常不需调用connect,但在需要固定目标地址时使用。connect主要作用是记录目的地址,使后续send操作无需指定地址,且允许使用recv/recvfrom。已连接的UDP套接字限制了数据报只与connect指定的对端交换,提高安全性,并能返回异步错误。connect在UDP中并不建立连接,而是用于简化发送和错误处理。
摘要由CSDN通过智能技术生成

一般udpsocket 是不用调用connect函数的,那么在什么时候需要调用connect呢,或者说connect的作用是什么呢?

套接字类型                                                           write/send         不指定目的地址的sendto      指定目的地址的sendto

tcp套接字                                                                   可以                      可以                                           EISCONN

udp套接字(已连接)                                              可以                      可以                                           EISCONN

udp套接字(未连接)                             EDESTADDRREQ                      EDESTADDRREQ                 可以

udp connect 可以调用tcp的recv或send()函数

下面内容转自:

标准的udp客户端开了套接口后,一般使用sendto和recvfrom函数来发数据,最近看到ntpclient的代码里面是使用send函数直接法的,就分析了一下,原来udp发送数据有两种方法供大家选用的,顺便把udp的connect用法也就解释清楚了。

方法一:

socket----->sendto()或recvfrom()

方法二:

socket----->connect()----->send()或recv()

首先从这里看出udp中也是可以使用connect的,但是这两种方法到底有什么区别呢?首先把这四个发送函数的定义列出来:

int send(int s, const void *msg, size_t len, int flags);

int sendto(int s, const void *msg, size_t len, int flags,

const struct sockaddr *to, socklen_t tolen);

int recv(int s, void *buf, size_t len, int flags);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值