gpt4 book ai didi

sockets - 在UDP套接字上使用sendto()/recvfrom()而不是connect()/send()/recv()的目的是什么?

转载 作者:行者123 更新时间:2023-12-03 12:02:46 24 4
gpt4 key购买 nike

我可以理解TCP和UDP的概念,但是我仍然不知道为什么有两种发送UDP数据包的方法,而且我仍然不了解bind()accept()是否绝对必要...

最佳答案

  • accept()用于TCP。它与UDP无关。
  • UDP中的
  • connect()对另一端没有任何作用,它只是调节本地API来知道您向谁发送消息和从谁接收消息。
  • 如果您不知道,不关心或不想使用同一套接字发送到多个目标,则不要使用connect(),而要使用sendto()。同样用于接收。

    例如,以UDP服务器为例。它将调用recvfrom(),,以便它将获取源地址信息,处理请求,创建响应并通过sendto().将其发送到该地址。在任何地方都没有connect(),因此无法使用send()recv().
  • 只需对服务器进行bind(),因为客户端需要固定的端口号才能发送到该服务器。客户端根本不需要bind():使用系统分配的本地端口号在第一个send()/sendto()/recv()/recvfrom()上进行自动bind()。
  • 关于sockets - 在UDP套接字上使用sendto()/recvfrom()而不是connect()/send()/recv()的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6189831/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com