问题标签 [udpclient]
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.
.net - 如何通过 UDP 发送实时数据?
我必须尽可能快速和实时地通过 UDP 发送一系列视频帧,当我掌握了基础知识时,我遇到了各种各样的困难。我的一些目标:
数据通常通过拨号发送(因此是 UDP 而不是 TCP),但还需要支持快速以太网。
偶尔丢帧是可以的(因此使用 UDP 而不是 TCP)。
需要低延迟。远程接收的帧应该是最近发送的帧(在缓冲区中等待的帧不超过几帧)。
我需要能够检测有效带宽,以便我可以或多或少地压缩帧以保持帧速率。
我已经设法实现了大部分部分:
我将帧数据分解为一个或多个大约 500 字节的数据报,每个数据报都有一个序列号和其他信息。接收器重新组合整个帧并检测是否有任何数据报丢失。
如果接收方检测到超过一定百分比的丢帧(例如,过去 10 帧中的 50%),我会向发送方发送一条 TCP 消息以减慢 50%。发送者在随后的每一帧中缓慢地将速度提高 5%。
使用 System.Net.Sockets.UdpClient 发送和接收数据。
我有一个单独的 TCP 通道,用于控制返回给发送者的消息。
我现在的主要困难是检测有效带宽和处理延迟,尤其是在拨号时(最大约 4,000 字节/秒)。例如,如果我尝试使用 TcpClient.Send() 发送 100,000 字节/秒,它们似乎都到达(没有丢弃的数据报),但在最后一个数据报到达时延迟很大。我认为 TcpClient.Send() 函数会阻塞,直到缓冲区能够发送这弄乱了我当前的算法。
任何人都可以向我指出任何信息来源,以了解如何:
检测 UDP 上的实际带宽。
用于动态调整带宽以适应可用管道的更好算法。
以所需带宽平稳发送数据。
一种检测延迟并将延迟降至最低的方法。
上周我一直在转动我的轮子,每次我解决一个问题时,似乎另一个问题就会抬头。
delphi - 处理 TUdpSocket
我正在尝试在 Delphi 中使用 TUdpSocket。我想要做的是连接到 UDP 服务器,发送一些数据并等待应答。数据发送正确,但控件没有收到任何东西。我不知道为什么。我已经为这个问题苦苦挣扎了好几个小时了,我要放弃了:-(。
我尝试使用 TIdUDPClient,但情况是一样的。数据发送正确,但没有收到。
只有 TIdUDPServer 或多或少地正常工作,因为它既发送数据又接收数据。不幸的是,数据接收由一个单独的线程(主线程或其他线程,取决于 ThreadedEvent 属性)处理,这迫使我使用同步并使整个代码复杂化。我想在我自己的线程中处理 UDP 连接。只需发送一些数据并调用 WaitForData() 来等待答案,然后在同一个线程中处理它。
如果可能的话,我不想使用任何第三方控件,但如果这是唯一的解决方案,我接受它。
非常感谢您提前提供的帮助。
- - 例子 - -
i) TUDPSocket:
如您所见,控件应该接收它传输的数据。显然它确实如此,因为在调用 Select() 方法后 lR 的计算结果为 true。但是 Receiveln() 返回一个空字符串,就像 ReceiveBuf() 一样。当我启动一个 UDP 服务器并向它发送一些数据时,它会被正确接收,所以我确定数据真的被发送了。
c# - 从 C# 获取 DHCPINFORM 消息响应时出现问题
我正在开发一个应用程序,我想在其中通过 DHCP 服务器提取一些信息。所以我在端口 67 UDP 广播上发送一个 DHCPINFORM 数据包。我面临的问题是我一直没有收到响应,即 DHCPACK 或来自 DHCP 服务器的任何其他消息,这意味着有时它会立即发送回一个 DHCPACK 数据包,有时根本没有,这可能是什么原因造成的?
这是我的网络配置我的 IP:192.168.3.31 DHCP 服务器位于:192.168.3.108
我正在使用的 C# 代码是
请帮帮我?
c# - C# UdpClient 服务器和客户端问题
这是我的服务器代码
这是我的客户代码
根据我的客户端和服务器,客户端是向服务器发送数据的那个。
但我的要求是相反的!我无法做到这一点..当我尝试将此代码添加到服务器时
我得到一个例外The operation is not allowed on non-connected sockets.
有人能帮我吗?
c# - 如何知道c#UdpClient使用的端口号?
我正在使用 c sharp 创建一个客户端服务器应用程序。服务器正在使用具有固定端口号的 tcplistener。客户端使用 tcpclient 连接到服务器。连接后,客户端和服务器都使用此连接进行通信。然后应用程序创建新的 udp 连接以发送和接收消息。由于服务器假设接受来自单个客户端的多个连接,我必须区分每个连接与不同的端口。为了做到这一点,我必须首先 1. 在服务器上,创建一个 udpclient(在服务器上自动使用未使用的 udp 端口)。2.将服务器udpclient使用的端口号发送给客户端。3. 客户端使用指定的端口号向服务器发送数据。
问题是,如何创建一个可以知道使用的端口号的 udpclient?
c# - 如何在循环中使用 UdpClient.BeginReceive
我想做这个
但UdpClient.Receive
我必须使用 ,而不是使用UdpClient.BeginReceive
。问题是,我该怎么做?使用BeginReceive
的示例并不多,而且 MSDN 示例根本没有帮助。我应该使用BeginReceive
,还是只在单独的线程下创建它?
我一直得到ObjectDisposedException
例外。我只收到发送的第一个数据。下一个数据将抛出异常。
是什么赋予了?
顺便说一下,总体思路是:
- 创建 tcpclient 管理器。
- 使用 udpclient 开始发送/接收数据。
- 当所有数据都发送完毕后,tcpclient 管理器将向接收者发出所有数据已发送的信号,并且应该关闭 udpclient 连接。
c - UDP 套接字的发送方 IP/端口
是否可以使用 C 套接字获取发送方 IP 和(动态获取的)端口?我有以下内容:
这几乎是从指南中获取的(尽管我有点明白?)。但我无法确定我将使用哪些信息来查找客户数据。
任何和所有的帮助表示赞赏,谢谢!
c# - C# UDP 套接字绑定异常
我正在尝试为无线网状网络创建一个程序(除了名称之外的所有内容)。大多数网络将处理 TCP 消息传递,但要确定所有邻居 IP(因为它们在启动时将是未知的),我选择使用 UDP 广播作为初始发现消息。在大多数情况下,该代码是无关紧要的,因为初始测试似乎有效,目前我不调用它。
以下是接收和注册邻居IP的部分。
我已经使用两个 IPEndPoints 进行了测试,无论我如何设置它,绑定都会失败,并出现 SocketException.ErrorCode 10022 Windows Socket Error Codes。这是一个无效的参数,但我对这意味着什么感到困惑,因为所需的参数是一个端点。
这在第一次运行时失败,所以它不像我试图重新绑定端口。
c# - udpclient 本地端点、远程端点。那什么意识?
如何为 udpclient 指定特定的 ipaddress:port 接收?我对 updclient.client.localendpoint 和 udpclient.client.remoteendpoint 感到困惑。我在想可能是它的远程端点,但我无法显示远程端点值。加上我的本地端点 ip 是 0.0.0.0。那什么意识?
c# - 是否可以在 C# 中设置 UdpClient ReceiveBufferSize 属性?
我想更改 udpclient receivebuffersize 以防止在接收 udp 数据包时缓冲区溢出。是否可以在 c# 中更改它。实际属性是 UdpClient.Client.ReceiveBufferSize。我必须使用其他方法吗?
谢谢。