- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我刚刚遇到一个奇怪的事情,我看到应用程序默认情况下它们使用 SOCK_STREAM
函数。为什么会这样?这 SOCK_STREAM
只是创建多个流吗?或者它是可用于创建 TCP 流的标准 SOCK_STREAM
函数?
我认为 tsunami 是基于 UDP 的,但仍然具有一些类似于 TCP 的功能,例如TCP 公平、友好等。
有人可以解释一下这个问题吗?我对此感到非常困惑。
最佳答案
TCP 几乎总是使用 SOCK_STREAM
而 UDP 使用 SOCK_DGRAM
。
TCP (SOCK_STREAM
) 是一种基于连接的协议(protocol)。连接已建立,并且双方进行对话,直到连接被其中一方或网络错误终止。
UDP (SOCK_DGRAM
) 是一种基于数据报的协议(protocol)。您发送一个数据报并得到一个回复,然后连接终止。
如果您发送多个数据包,TCP promise 按顺序传送它们。UDP没有,所以接收者需要检查它们,如果命令很重要。
如果 TCP 数据包丢失,发送者可以知道。 UDP 则不然。
UDP 数据报的大小是有限的,从内存我认为是 512字节。 TCP 可以发送比这更大的 block 。
TCP 更加健壮并且进行更多检查。 UDP是一个阴影重量更轻(计算机和网络压力更小)。
选择适合您与其他计算机交互方式的协议(protocol)。
关于c++ - SOCK_DGRAM 和 SOCK_STREAM 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5815675/
我有一个简单的套接字客户端和服务器程序,它不能在互联网上工作 # Echo server program import socket import ImageGrab HOST = ''
我正在学习 Python 中的套接字并想出了 variable = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 我明白了这个socket.soc
我已经从 PHP 手册中阅读了这两种通信类型的定义,但实际上我在理解某些段落时遇到了问题,所以我需要你的帮助。 这些拖曳定义适用于 PHP 手册: SOCK_STREAM 提供有序、可靠、全双工、基于
我在通过 sock_stream 连接发送字符串(一次一个字符)时遇到问题。原因是我试图一次发送多个字符串,这些字符串接近 70000 个字符。看来我尝试使用的写入函数需要一个字符串。 for(i=0
我正在使用套接字进行网络编程。当服务器未启动时,我的客户端程序尝试重复连接到服务器时出现问题(项目的特殊要求)。 问题是这样的: 服务器未启动:客户端等待 3 秒,然后发出另一个 connect()
我正在从 C 程序写入 SOCK_STREAM正在从 go 程序监听的 Unix 域套接字,使用 net.Listen("unix", sockname) .当我将套接字设置为 O_NONBLOCK使
我刚刚遇到一个奇怪的事情,我看到应用程序默认情况下它们使用 SOCK_STREAM 函数。为什么会这样?这 SOCK_STREAM 只是创建多个流吗?或者它是可用于创建 TCP 流的标准 SOCK_S
我刚刚开始更好地了解套接字编程,我正在尝试构建一个可以发送和接收消息的简单程序。我遇到了将套接字绑定(bind)到地址以使用它的问题。这是我的- #include "stdafx.h" using n
我需要在 Linux 上用 C 编写一个小型客户端/服务器应用程序。 由于我是网络编程的新手,所以我构建了一个简短的示例以便进行更多探索。 我基本上是在尝试发送一个由客户端动态分配的 double 数
我目前正在 linux 上编写一个服务器 http,它应该服务于 GET 和 POST 查询。我的问题是: - 我应该什么时候关闭与某个客户端的连接?发送响应后立即?还是我应该等待套接字以获取另一个查
我正在做一个项目,允许用户通过代理重定向他的浏览。系统是这样工作的——用户在远程 PC 上运行这个代理,然后也在他的笔记本电脑上运行代理。然后,用户将其在笔记本电脑上的浏览器设置更改为使用 local
我正在使用 https://elixir.bootlin.com/linux/v4.9.137/source/samples/bpf/sockex3_kern.c在这个例子中,我使用的不是 RAW 套
我最近一直在研究网络与 c 代码和密码学,在思考随机问题时,我偶然发现了一段用于数据包嗅探的代码,我对函数 中使用的实际套接字有疑问从()接收()。套接字通过以下 sock 函数 rawSock =
我有一个小型应用程序,它使用 Unix 域套接字与客户端通信数据。套接字的类型是 SOCK_STREAM,并且设置为阻塞模式(默认)。当客户端很懒并且无法处理我写入套接字的数据时,我在特定情况下遇到了
我有两个简单的进程在两台不同的 linux 机器上运行,一个客户端和一个服务器,它们使用 AF_INET|SOCK_STREAM 套接字相互通信,客户端向服务器发送一个简短的命令字符串,然后服务器响应
大家好,我有个问题,我似乎找不到关于在多播上发送原始数据包的文档,所有示例、解决方案和文档都以 UDP 用法为中心。 我以此为例:http://svn.python.org/projects/stac
据我所知,如果 unix 套接字创建为 SOCK_STREAMS 类型,则它是单向的,如果 SOCK_DGRAM 则它是双向的。 我正在考虑使用 node-ipc用于通过 unix 套接字的 IPC。
据我了解,SOCK_DGRAM 和 SOCK_STREAM 对应于使用 INET 地址系列完成的无连接和面向连接的网络通信。 现在我正在尝试学习 AF_UNIX 套接字以在同一主机上运行的进程之间执行
我有一个小型客户端服务器应用程序,我希望在其中使用 C 而不是 C++ 通过 TCP 套接字发送整个结构。假设结构如下: struct something{ int a; char b[64]
我试图在 visual studio c++ 上创建一个套接字应用程序,但我做不到。 问题是 int listen_sock = socket(PF_INET,SOCK_STREAM,0) 返回 -1
我是一名优秀的程序员,十分优秀!