问题标签 [udp-data-transfer]
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.
c++ - UDT(基于 UDP 的数据传输协议)出现“连接中断”错误
我正在编写一个需要可靠 UDP 的实时游戏,因此我选择使用 UDT(基于 UDP 的数据传输协议 - http://sourceforge.net/projects/udt/)。
客户端(在浏览器上)通过 CGI 脚本向我的服务器发送实时消息。问题是有一些消息正在丢失,我不知道为什么,因为服务器说它已成功将所有消息发送到相应的客户端,但有时客户端没有收到消息。
在我的调试文件中,我发现当客户端没有收到消息时,它的脚本说:
我想获得一些关于服务器如何知道客户端是否收到消息的帮助;我应该从客户端发送 NACK 或其他东西吗?我认为 UDT 应该为我做到这一点。有人可以澄清这种情况吗?
我的代码的通信部分的相关部分如下所示,并带有一些注释:
服务器的相关代码:
客户相关代码:
感谢您的任何帮助!
PS。在找到链接http://udt.sourceforge.net/udt4/doc/opt.htm后,我尝试增加 close() 的逗留时间,将以下内容添加到服务器的代码中:
但问题还是一样...
聚苯乙烯。服务器端通信的其他部分是:(注意:对我来说,它们并不那么相关)
udp - 亚马逊 ec2 上的 Netty UDT 示例
我不是网络专家,所以我可能遗漏了一些简单的东西。
我已经使用 netty 4.0.11 http://dl.bintray.com/netty/downloads/netty-4.0.11.Final.tar.bz2将消息回显客户端和消息回显服务器构建为可运行的 jar 文件
我能够使用 maven 加载所有正确的依赖项,并且项目在本地和服务器上正确构建和运行。我可以在我的本地主机上运行一个服务器,并从同一个客户端(localhost,在我的本地机器和我的亚马逊 ec2 实例上)连接到它。它再次在我的机器和我的机器上连接到自身(localhost)服务器计算机。
问题是我无法从它正在运行的机器外部连接到服务器,例如,我想从本地计算机上运行的 echo msg 客户端连接到我的 echo msg 服务器(在我的 ec2 实例上运行)。
我已经设置了亚马逊安全设置,以允许来自正确端口和本地机器 ip 的 UDP。我在 ec2 实例上运行 Echo 服务器并正确启动:
但我无法从本地主机外部连接,这是我从客户端机器收到的错误消息,我还关闭了本地机器上的所有防火墙(暂时)。不过,当我尝试连接时,我得到:
java - Netty NIO Udt 尝试给出错误,我在文档中找不到答案
抱歉标题可能不好,但正如它所说的那样。我是 Netty 的新手,这是我第二次尝试使用网络解决方案来解决我正在尝试做的事情。第一个直接使用 java.nio UDP 的解决方案有效,但效率低下且速度比我能忍受的慢。
我在启动时不断收到错误,找不到解决方案。该错误告诉我在类 io.netty.channel.udt.nio.NioUdtProvider 中没有这样的字段 Rendezvous。从javadocs看来,这指定了线程的作用。我错过了一个罐子吗?发生了什么?我可以获得有关如何解决此问题的任何指示吗?
我正在使用 Netty 4.0.0.1 CR1。这是我发现的唯一与示例一起使用的版本。我的类路径中还有 barchart-udt-core-2.2.0 和 jsch。
问题发生在我的服务器的主类(未命名为 main)中。在下一行。
更具体地说,错误发生在最后两行。
使用 MsgEchoServer 示例和我的 NettyServer 时,我收到以下错误代码。
我试图找到一个包含这些定义的 netty 4x jar,特别是完整的 Netty 版本,但得到相同或不同的错误。
我的 UtilThreadFactory 代码如下,与http://grepcode.com/file/repo1.maven.org/maven2/io.netty/netty-example/4.0.0.CR1/io/netty/example中的代码几乎相同/udt/echo/message/MsgEchoServer.java?av=f
谢谢
实用线程
*更新* 我按要求升级并得到完全相同的错误。我现在在我的路径中运行带有 jars 4.0.12 和 4.0.12-FINAL 的 Netty 4.0.12。无论我有一个或其他 jar 并且我清除了我的 eclipse 缓存,都会发生同样的错误。同样的问题也发生在 STS 弹簧工具中。任何帮助表示赞赏。谢谢
networking - UDT send() - 如何保证整个缓冲区的发送
我一直在使用 UDT 库一个基于 udp 的协议来发送文件,我注意到 send 函数在以阻塞模式返回之前将数据发送到缓冲区。然而,发送函数似乎返回而不以阻塞模式发送整个数据(send() 返回发送的数据量)。此问题的可能原因是什么?如果无法解决问题,应该如何发送剩余数据?我为 tcp 和 udp 使用了 winsock 库,但我没有得到 tcp 或 udp 发送的这个概率(与 udt 的功能相似)。通过传输相同的文件和网络测试所有程序。
我知道如果它是非阻塞的,这可能会发生,但我使用的是无限超时的阻塞发送。
java - Java Netty UDT 集合点不起作用
我正在使用 netty + udt + 集合点测试此示例的修改版本:http: //netty.io/4.0/xref/io/netty/example/udt/echo/rendezvous/package-summary.html
我已经在我的服务器和本地机器上启动了一个实例,其中“self”-host 是双方的 localhost,“peer”-host 是另一个的主机名。所以A绑定到localhost并连接到B,B绑定到localhost并连接到A。
在 LAN 中一切正常,但当我连接位于防火墙(fritzbox 路由器)和我的服务器后面的计算机时却不行。(服务器不会阻止端口)。在这种情况下会发生超时:
在双方我看到:
我以为 netty+udt 做 udp 打孔,不是吗?
c++ - 将现有套接字与 UDT 绑定
我正在使用 UDT 库在 NAT 后面的计算机之间传输文件。我已经在 python 中做了一个打孔协议,我知道它是如何工作的。在这里,我正在尝试将 UDT 套接字绑定到现有的 UDP 套接字。
使用sock
我现有的 UDP 套接字和peeraddr
我想交谈的计算机的地址
我有这个错误:
这有点奇怪,因为在UDT 绑定文档中,这似乎是可能的。
java - 在 Netty 中阻塞 IO (OIO) UDT 通道
我想在阻塞 IO 通道上使用 Netty 的 UDT 实现。我已经有一个有效的 NIO UDT 实现,其中 Netty 在 NIO 上有一个适当的通道。我找不到适合 OIO 的通道,如果有人帮助我在 Netty 中使用正确的阻塞 IO UDT 通道,那就太好了。
ios - Objective-C 中是否有类似于 Java 中的 Netty 的机制,用于将 TCP 转移到传输层中的 UDT 协议
Objective-C 中是否有类似于 Java 中的 Netty 的机制,用于将 TCP 转移到传输层中的 UDT 协议。
现在我想实现 HTTP 请求和响应(默认通过 TCP 运行)以在我的应用程序中通过 UDT 运行。
这可能吗?
iOS中是否有任何内置机制?
c++ - 在 XCode 上设置 UDT 库
我有一台装有 OS X Yosemite 的 Macbook Pro Retina。我需要让 UDT 库(请参阅http://sourceforge.net/projects/udt/)在我的环境中工作。我下载了最新版本(4.11),解压,然后运行
按照这里的说明。然后我将 udt.h 文件从 src 文件夹移动到我的 /usr/include 文件夹,将 udt.dylib 移动到我的 /usr/lib 文件夹。然后我将 -I/usr/include 添加到我的 Xcode 项目中的“其他 C++ 标志”设置中,并将“-L/usr/lib”添加到我的“其他链接器标志”设置中。
当包括
一切正常(看起来可以找到文件)。但是,当我还将 -ludt 添加到“其他链接器标志”设置中时,我得到了
我究竟做错了什么?任何帮助将不胜感激。
c++ - UDT 无法发送无符号字符*
我使用 UDT 库来发送我的数据。但似乎无法正确发送 unsigned char* 数据。一方面我发送它喜欢
另一方面,我收到如下消息:
双方发送/接收计数字节相同。但数据不一样。当我做某种
我有不同的哈希值。在 UDT 源中有以下行:
如您所见,输入参数是 char* 但不是 unsigned char* 或 void*。这是否意味着我应该只发送 char* 或使用例如 base64 来编码我的二进制数据?