问题标签 [udp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6106 浏览

c# - 在 C# 中需要多播 udp 服务器发现方面的帮助

作为对这个问题的一种跟进,我已经在我的本地机器上得到了一个解决方案,但在网络上的机器上却没有。

除了基础知识之外,我对套接字知之甚少,所以请耐心等待。目标是让客户端在本地网络上寻找服务器,这是一些剪切/粘贴/编辑代码的结果。

这是客户端代码:

这是服务器代码:

它可以在我的本地机器(服务器和客户端)上找到,但是当我在同一网络上尝试另一台机器时,我得到“现有连接被远程主机强行关闭”

我意识到我需要添加很多尝试/捕获,但我只是想先了解它是如何工作的。

0 投票
6 回答
105338 浏览

c# - C# 小端还是大端?

在允许我们通过 UDP/IP 控制它的硬件文档中,我发现了以下片段:

在该通信协议中,DWORD 为 4 字节数据,WORD 为 2 字节数据,BYTE 为单字节数据。存储格式为little endian,即4字节(32bits)数据存储为:d7-d0、d15-d8、d23-d16、d31-d24;双字节(16 位)数据存储为:d7-d0、d15-d8。

我想知道这如何转换为 C#?我必须在发送之前转换东西吗?例如,如果我想发送一个 32 位整数或 4 个字符的字符串?

0 投票
5 回答
57435 浏览

networking - 如何为我的应用程序选择多播地址?

我应该如何为我的应用程序选择 IPv4 多播地址?我可能需要不止一个(最终可能需要整个范围),但只是想避免与其他应用程序发生冲突。

  • 数据包将完全包含在管理域中,可能是 LAN
  • 如果我的应用程序的多个独立实例在同一个网络上使用,它们每个都可以使用自己的多播地址 - 但如果它们不这样做,它们无论如何都可以共存,它们只会有少量的开销忽略彼此的包。
  • 我的数据包已经包含一个“幻数”以避免出现问题
  • 我将检查发起者地址(我知道当然可以被欺骗)、TTL 和其他东西,以防止意外的数据包搞砸。

请想法:)

目前我刚刚从“本地使用”空间中分配了一个任意一个,239.255.42.99

0 投票
1 回答
1611 浏览

java - Java:使用MulticastSocket接收时确定接收地址

我正在使用 MulticastSocket 接收 UDP 多播数据包。如何确定这样的数据包发送到哪个地址?使用提供的方法,我只能确定发件人地址。

当然,我是在创建侦听套接字时设置 To-Address 的人,但我真的可以确定吗?广播包呢?以某种方式最终到达这里的数据包呢?我真的很想区分数据包是否真的是多播的。

谢谢!

更新:目前似乎刚刚发送到该端口的单播数据包也最终在多播套接字中接收():(绑定到设备也没有给我更好的结果

0 投票
7 回答
51084 浏览

c++ - 对于最大吞吐量,UDP 数据包的最佳大小是多少?

我需要通过可能有损的网络将数据包从一台主机发送到另一台主机。为了最大限度地减少数据包延迟,我不考虑 TCP/IP。但是,我希望最大化使用 UDP 的吞吐量。要使用的 UDP 数据包的最佳大小应该是多少?

以下是我的一些考虑:

  • 网络中交换机的 MTU 大小为 1500。如果我使用大数据包,例如 8192,这会导致分片。丢失一个片段会导致整个数据包丢失,对吗?

  • 如果我使用较小的数据包,我会产生 UDP 和 IP 标头的开销

  • 如果我使用一个非常大的数据包,我可以使用的最大数据包是多少?我读到最大的数据报大小是 65507。我应该使用什么缓冲区大小来允许我发送这样的大小?这会有助于提高我的吞吐量吗?

  • 常见操作系统(例如 Windows、Linux 等)支持的典型最大数据报大小是多少?

更新:

一些数据的接收者是没有实现 TCP/IP 堆栈的嵌入式系统。

我知道这个地方到处都是非常坚持使用可用的东西的人。但我希望有更好的答案,而不是只关注 MTU。

0 投票
2 回答
2139 浏览

udp - 如何使用 unix Sockets API 查找本地可用的 UDP 端口

我有一个应用程序,其中可能有许多进程必须向一个进程发送消息。我认为最方便的方法是发送一个 UDP 数据报。

打开套接字时,我需要指定要监听的端口。因为我只想触发并忘记 UDP 数据报,所以我想让操作系统选择一个可用端口。我宁愿不必寻找一个,特别是因为我的进程的许多实例可能正在运行。有没有办法告诉操作系统只选择一个可用端口(或者更好的是,甚至不打开侦听套接字)来触发并忘记我的 UDP 数据报?

0 投票
3 回答
11461 浏览

header - 为什么 UDP 在标头中有长度字段而 TCP 没有?

为什么 UDP 在标头中有长度字段而 TCP 没有?

我猜测 TCP 中段的长度是从 IP 标头推断出来的,但是应该能够对 UDP 数据报做同样的事情

0 投票
15 回答
196116 浏览

http - HTTP 使用 UDP 吗?

这可能是一个愚蠢的问题:

  • HTTP 是否曾经使用过用户数据报协议?

例如:

如果使用 HTTP 流式传输 MP3 或视频,它是否在内部使用 UDP 进行传输?

0 投票
6 回答
11139 浏览

sockets - UDP 响应

UDP 不发回任何确认,但它会发送任何响应吗?

我已经设置了客户端服务器 UDP 程序。如果我让客户端向不存在的服务器发送数据,那么客户端会收到任何响应吗?

我的假设是;

客户端 --> 广播服务器地址 (ARP) 服务器 --> 使用其 MAC 地址回复客户端 (ARP) 客户端向服务器发送数据 (UDP)

在任何情况下,客户端都只会收到 ARP 响应。如果服务器存在与否,它不会得到任何 UDP 响应?

客户端正在使用 sendto 函数发送数据。我们可以在 sendto 调用后得到错误信息。

所以我的问题是当客户没有得到任何回应时如何获得这些信息。错误代码可以从 WSAGetLastError 中获取。

我试图将数据发送到不存在的主机并且 sendto 调用成功。根据文档,它应该失败并返回值 SOCKET_ERROR。

有什么想法吗??

0 投票
2 回答
1068 浏览

networking - 路由器后面的客户端服务器程序

我正在尝试运行客户端服务器 UDP 程序。我的两台机器都在不同的网络中。我在路由器中设置了端口转发。

我的服务器有两个 IP 地址:1)外部 200.?.?.? 2) 内部 192.168.0.100

在创建 UDP 服务器时,我需要创建一个绑定到地址的套接字。

我应该将套接字绑定到哪个地址,外部还是内部?

我尝试使用内部地址,但没有从客户端获取任何数据。

建议...