首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“无连接,无连接”连接

“无连接,无连接”连接
EN

Stack Overflow用户
提问于 2012-03-13 10:27:31
回答 4查看 3.1K关注 0票数 4

我刚开始学习套接字编程,我遇到了一个我以前见过的概念,但让我很困惑。

看起来,UDP连接是“无连接、无连接”的连接。

“无连接”和“无连接”不是多余的吗?

那么有四种类型的连接吗?

  1. connectionless,非连通
  2. connectionless,connected
  3. connection-oriented非连通
  4. connection-oriented,连接

最后,一个“无连接、无连接”的连接函数是如何实现的?这不是自相矛盾吗?LOL

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-13 10:37:30

事实上,没有UDP连接这样的东西。基本上,UDP是一种火灾和遗忘协议,您只需向某台机器发送数据包(不需要首先建立连接),并希望另一台机器能够捡起它们(如果它们完全成功的话)。

当您建立“套接字连接”时,没有什么神奇的事情发生,即您和您的远程客户端之间的连线不会改变颜色或其他东西。在连接过程中,双方都同意使用给定的协议在因特网上可靠地接收和发送数据。它绝对不需要连接任何东西来通过互联网发送和接收东西,但是连接允许您保证完整性和秩序(和其他一些东西),因为这两台机器都同意遵循某种方法。

我不知道“没有连接,没有连接”的套接字。告诉您这一点的人可能只是想强调UDP的不相关方面。

票数 6
EN

Stack Overflow用户

发布于 2012-03-13 14:03:37

从技术上讲,您可以在UDP套接字上调用connect()。在这种情况下,套接字会记住对等地址,因此可以使用send()write()系统而不是sendto()发送数据报。此外,它使套接字只从该对等点接收数据报,而丢弃来自其他对等点的数据报。

这可能就是所谓的“无连接,连接”套接字,这意味着在UDP套接字上调用了connect()调用。

票数 12
EN

Stack Overflow用户

发布于 2012-03-13 10:36:07

使用UDP套接字,您可以像使用TCP套接字一样连接到服务器。但是,您也可以使用sendto函数直接将数据包发送到服务器,而无需连接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9682266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档