草庐IT

linux - RTI connext DDS 的 UDP 传输中使用了多个端口?

在RTIconnextDDS的UDP传输中使用多个端口,而在RTIconnextDDS的TCP/IP中只使用一个端口有什么好处?? 最佳答案 UDP端口映射由OMGRTPSDDS互操作性有线协议(protocol)规范(http://www.omg.org/spec/DDSI-RTPS/)定义,平台特定模型(PSM):UDP/IP。有一些优点/要求证明使用不同的端口进行发现和数据流量是合理的。最相关的是:流量差异化:使用不同的端口更容易识别不同类型的流量。这对双方都有用调试(例如,使用wireshark),以及应用不同的处理发现和用

sockets - TCP 和 UDP 协议(protocol)意义上的记录或数据边界是什么意思?

我正在学习套接字并在SOCK_SEQPACKET通信协议(protocol)中找到数据或记录边界一词?任何人都可以简单地解释什么是数据边界以及SOCK_SEQPACKET与SOCK_STREAM和SOCK_DGRAM有何不同? 最佳答案 这个答案https://stackoverflow.com/a/9563694/1076479对消息边界(“记录边界”的不同名称)有一个很好的简洁解释。将该答案扩展到SOCK_SEQPACKET:SOCK_STREAM在两个对等点之间提供可靠、有序的数据流通信。它不维护消息(记录)边界,这意味着应用

java - 如何使用UDP或TCP发送压缩数据(lua/java)

我正在制作一个带有lua客户端和Java服务器的服务器。我需要压缩一些数据以减少数据流。为了做到这一点,我使用LibDeflate在客户端压缩数据localconfig={level=1}localcompressed=LibDeflate:CompressDeflate(data,config)UDP.send("21107"..compressed..serverVehicleID)--Senddata在服务器上我用它来接收数据包(TCP)out=newPrintWriter(clientSocket.getOutputStream(),true);in=newBufferedRe

windows - 改进 UDP 消息处理

我有一个PC程序通过UDP从20个自定义硬件盒接收数据。这些盒子中的每一个都不断地将UDP消息发送到PC上的单个UDP套接字。这些消息都包含10-150字节的数据,每个单元在12秒内发送大约20条消息。测试显示PC遗漏了一些消息。网络上的盒子越少,错过的消息就越少。长期的解决方案是在硬件中缓冲数据,让PC根据需要通过TCP检索数据,但我需要在短期内解决/尽量减少丢失消息的问题,直到可以部署该解决方案。想法包括:-升级电脑-在传输前过滤掉不必要的消息-将硬件中单独的UDP消息组合成一个更大的消息-在PC中使用多个套接字接收消息我正在寻找有关这些想法的反馈,以及我们可能遗漏的任何反馈。接收

c - 关于 C 程序中 TCP 和 UDP 连接的问题

我正在尝试实现一种机制,其中客户端通过UDP向服务器发送编码消息。收到此消息后,需要在服务器和客户端之间建立TCP连接。我面临这个奇怪的问题,当我尝试与客户端建立TCP连接时,如果服务器事先收到来自客户端的UDP数据包,客户端的connect()会失败。如果我尝试在没有任何UDP消息传递的情况下与客户端建立TCP连接,那么一切正常。我附上了服务器端和客户端的代码。intsockfd,sockfd2,newsockfd,n;charmsg[1000];sockaddr_inserverAddress,serverAddress2,clientAddress;socklen_tlen=si

networking - 防止TCP连接导致UDP丢包

考虑原型(prototype)多人游戏服务器。允许连接到服务器的客户端下载map和脚本。创建TCP连接来完成此操作很简单。但是,服务器必须继续通过UDP响应其余客户端。如果允许TCP下载连接使可用带宽饱和,UDP流量将遭受严重的数据包丢失。处理此问题的最佳方法可能是什么?通过跟踪时间以某种方式“限制”TCP上传连接似乎绝对是个好主意,并在固定的时间间隔内发送send()。这样,如果UDP数据包丢失开始更频繁地发生,则TCP连接可能会进一步受到限制。操作系统是否仍倾向于将数据捆绑在一起而不是源源不断地发送出去?我希望多久调用一次send()?我想这样做太频繁会导致数据首先被缓冲在一起,从

tcp - Icecast 传输层协议(protocol) - TCP 还是 UDP?

我好像找不到答案,所以我问你。股票Icecast2服务器是否使用TCP或UDP来广播流数据?我知道它使用自定义的基于HTTP的应用层协议(protocol),所以有人可能认为它是TCP,但另一方面它是一个广播应用程序,所以UDP对我来说更合乎逻辑。如果它仍然使用TCP,为什么要这样做? 最佳答案 Icecast和SHOUTcast都将TCP用于源流和到终端客户端的流。这有很多好处:大多数互联网广播电台使用的编解码器不适合丢失大块数据。如果流损坏,无论是丢失的还是乱序的数据包,解码器有时能够重新同步并继续,但很多只会失败。大多数互联网

java - 使用Java的TCP或UDP

抱歉,这么长的帖子。我已经对该主题进行了很多研究,并且让自己继续猜测应该走哪条路。提前感谢您的想法和投入。方案:用Java创建一个程序,该程序每0.2.0.5秒将包含简单“此时”或实时数据的数据包发送到大约5-7个客户端。(每个数据包最多只能容纳10个字节的数据)。服务器可以通过wifi或以太网连接。但是,客户端只能使用Wifi。客户端将不会向服务器发送任何数据包,因为它将仅显示从服务器检索到的数据。我的想法:我最初开始使用TCP作为传输层来创建服务器程序。这将在Java中使用ServerSocket类。我还使其成为多线程来接受多个客户端。由于种种原因,TCP听起来是个好主意。使用TC

java - 如何在与客户端建立 TCP 连接时建立 UDP 连接?

我有一个简单的服务器,它有一个主线程并接受客户端,并为每个客户端启动一个新线程。所以在这个线程中我想与客户端建立另一个连接(UDP),但我很困惑。如果有10个线程(客户端)在运行,并且所有10个线程都尝试打开具有相同端口的DatagramSocket,那会抛出SocketBindException吗?那我该怎么做呢? 最佳答案 客户端通过TCP连接到服务器。决定监听哪个UDP端口。将该信息发送到服务器通过TCP。产生一个线程,绑定(bind)到UDP端口成为UDP服务器服务器在TCP套接字上接收UDP端口信息。生成一个接收端口信息的

python - UDP 和 TCP 始终为一个客户端使用相同的 IP?

我为我的在线游戏制作了一个服务器(python,twisted)。从TCP开始,然后添加了UDP的持续更新(速度有了很大的提高)。但是现在,我需要将每个UDP套接字客户端与每个TCP客户端连接起来。我通过让每个客户端首先连接到TCP服务器,并获得一个唯一的ID来实现这一点。然后客户端将此ID发送到UDP服务器,同时连接它。然后我有一个TCP客户端的主列表(按唯一ID排序)。我的目标是能够通过TCP和UDP向同一个客户端发送消息。将UDP和TCP套接字链接到同一客户端的最佳方式是什么?我可以只获取新TCP客户端的IP地址,然后通过UDP将数据发送到该IP吗?或者客户端是否需要连接两次,一